Seite 1 von 1

Listen in Beziehung sortieren

Verfasst: Montag 4. Mai 2009, 15:51
von hallo02
Hallo Leute

Ich habe 4 Listen die in einer Beziehung stehen..
Nun möchte ich die erste nach ABC sortieren, folglich sollten die drei anderen gleich sortiert werden. (Also das die Beziehung wieder stimmt)

Hat jemand eine Idee?
Vielen Dank.

Verfasst: Montag 4. Mai 2009, 15:54
von derdon

Code: Alles auswählen

>>>help(sorted)
>>>import operator
>>>help(operator.itemgetter)
Im Forum kannst du auch Beispiele dazu finden.

Verfasst: Montag 4. Mai 2009, 15:56
von Dill
du solltest diese beziehungen bei der wahl der datenstruktur berücksichtigen.
4 listen sind hier wahrscheinlich nicht das richtige, sondern eher ein dictionary dessen items listen/tupel der länge 4 sind.

Verfasst: Montag 4. Mai 2009, 16:17
von numerix
Oder du implementierst einen eigenen Sortieralgorithums - dann kannst du die anderen drei Listen ja immer schön mitführen ... :)

Verfasst: Montag 4. Mai 2009, 17:47
von Leonidas
Man kann auch einfach die Listen ``zip()``pen, sortieren, un``zip()``pen (unsplicen).

Verfasst: Dienstag 5. Mai 2009, 07:55
von hallo02
Hätte mir jemand ein Beispiel wenn ich 4 Listen habe?

Verfasst: Dienstag 5. Mai 2009, 09:34
von Leonidas

Code: Alles auswählen

langs = ["Python", "Haskell", "Scheme", "Clojure", "Scala"]
r = range(5)
colors = ["green", "blue", "yellow", "orange", "black"]
powers = [2**i for i in r]
res = sorted(zip(langs, r, colors, powers))
#langs = [e[0] for e in res]
#r = [e[1] for e in res]
#colors = [e[2] for e in res]
#powers = [e[3] for e in res]
langs, r, colors, powers = zip(*res)
Irgendwie sind die letzten vier Zeilen etwas redundant, da ist mir auf die schnelle keine bessere Lösung eingefallen.

Edit: Bessere Lösung gefunden. Da kommen zwar Tupel raus, aber was solls..

Verfasst: Dienstag 5. Mai 2009, 11:44
von derdon
Wenn hallo02 unbedingt Listen haben möchte, geht indem man die letzte Zeile so schreibt:

Code: Alles auswählen

langs, r, colors, powers = map(list, zip(*res))