listen mit kartesichem Produkt verbinden

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
knumskull
User
Beiträge: 34
Registriert: Dienstag 29. September 2009, 08:07
Kontaktdaten:

Hallo,

ich habe ein dictionary, welches als Values jeweils eine Liste hat. Diese sollen mit Hilfe von kartesischem Produkt verknüpft werden.

Das habe ich:

Die Anzahl an Keys und Länge des Value können sind verschieden.

Code: Alles auswählen

out = {0: ['G0C', 'G0K'], 1: ['TL4'], 2: ['1D0'], 3: ['9AB', '9AK']}
das soll rauskommen:

Code: Alles auswählen

('G0C', 'TL4', '1D0', '9AB')
('G0C', 'TL4', '1D0', '9AK')
('G0K', 'TL4', '1D0', '9AB')
('G0K', 'TL4', '1D0', '9AK')
Folgende Ansätze habe ich versucht:
Hier wird zwar die gewünschte Ausgabe erzeugt, allerdings ist der Aufruf statisch und das geht nicht.

Code: Alles auswählen

for i in itertools.product(out[0], out[1], out[2], out[3]):
    print i

('G0C', 'TL4', '1D0', '9AB')
('G0C', 'TL4', '1D0', '9AK')
('G0K', 'TL4', '1D0', '9AB')
('G0K', 'TL4', '1D0', '9AK')

Nicht ganz das, was ich haben möchte :(

Code: Alles auswählen

for i in itertools.product(out.values()):
    print i

(['G0C', 'G0K'],)
(['TL4'],)
(['1D0'],)
(['9AB', '9AK'],)
Jemand eine Idee, wie ich mein Problem lösen kann?
Gruß,
Steffen
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wäre es so:

Code: Alles auswählen

In [1]: out = {0: ['G0C', 'G0K'], 1: ['TL4'], 2: ['1D0'], 3: ['9AB', '9AK']}

In [2]: from itertools import product

In [3]: list(product(*out.values()))
Out[3]:
[('G0C', 'TL4', '1D0', '9AB'),
 ('G0C', 'TL4', '1D0', '9AK'),
 ('G0K', 'TL4', '1D0', '9AB'),
 ('G0K', 'TL4', '1D0', '9AK')]
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
knumskull
User
Beiträge: 34
Registriert: Dienstag 29. September 2009, 08:07
Kontaktdaten:

argh ... Das die Lösung so einfach sein kann ;)

Vielen Dank. Der -->*<-- war die Lösung ... man wie dämlich :oops:
Antworten