Multiparameter Dictionary?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hallo,

vielleicht ist dieses Problem so trivial, dass ich den Wald vor lauter Bäume nicht sehe aber hier ist es:

Ich möchte ein Dictionary haben das mehrere Parameter hat. Eigentlich wäre dies sehr einfach zu realisieren indem man eine Tuple als Key verwendet.

Ich möchte aber z.B. einen Parameter festhalten und dann über die anderen Loopen. Also sagen wir wir haben sowas:

Code: Alles auswählen

d[1][2][3] = 5
d[3][1][2] = 6
d[2][3][1] = 7

for (i, j) in d[_][1].keys():
    print(d[i][1][j])
Geht das überhaupt? Wenn man eine Hierarchie hätte könnte man verschachtelte Dicts verwenden aber in meinem Fall ginge es nicht. Hat jemand eine Idee oder geht das einfach nicht?
Euch einen schönen Guten Morgen,

p90
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich denke, du suchst itertools.product:

Code: Alles auswählen

>>> import itertools
>>> result1 = itertools.product([1], range(3))
>>> result2 = itertools.product(range(3), range(3))
>>> list(result1)
[(1, 0), (1, 1), (1, 2)]
>>> list(result2)
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
Beim ersten Beispiel wäre dein ``i`` halt ein fester Wert (hier: 1). Beim zweiten Beispiel zeigt er alle Kombinationen, auch wenn sich ``i`` verändert. Dies entspräche zwei miteinander verschachtelten ``for``-Schleifen, wie man es von einigen anderen Programmiersprachen her kennt. Dass du an die entsprechenden Stellen die Schlüssel aus dem Wörterbuch anstatt konkreten Zahlen einsetzen sollst, müsste hoffentlich klar sein. Und das explizite ``list()`` kann weggelassen werden. Es dient hier nur zur Veranschaulichung der Ergebnisse.
Antworten