Seite 1 von 1

listen mit kartesichem Produkt verbinden

Verfasst: Samstag 18. Juni 2011, 14:37
von knumskull
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

Re: listen mit kartesichem Produkt verbinden

Verfasst: Samstag 18. Juni 2011, 14:43
von Hyperion
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')]

Re: listen mit kartesichem Produkt verbinden

Verfasst: Samstag 18. Juni 2011, 14:45
von knumskull
argh ... Das die Lösung so einfach sein kann ;)

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