Seite 1 von 1
zip-Liste sortieren
Verfasst: Sonntag 10. Mai 2020, 19:54
von kjd
Hi,
ich habe drei Listen (eine Liste mit integers und zwei mit strings) mit der zip Funktion zusammengeführt, und möchte diese nun nach den integers in der Liste sortieren.
Code: Alles auswählen
listA= [4, 1, 3, 2]
listB= [a, b, c, d]
listC= [e, f, g, h]
zip_list = zip(listA,listB,listC)
zip_list
Rauskommen würde jetzt:
Code: Alles auswählen
[(4,a,e),
(1,b,f),
(3,c,g),
(2,d,h)]
Ich will aber, dass es so rauskommt:
Code: Alles auswählen
[(1,b,f),
(2,d,h)
(3,c,g),
(4,a,e),]
Wie kann ich das am einfachsten umsetzen?
Re: zip-Liste sortieren
Verfasst: Sonntag 10. Mai 2020, 20:02
von __blackjack__
@kjd: Mit der `sort()`-Methode auf Listen‽
Re: zip-Liste sortieren
Verfasst: Montag 11. Mai 2020, 09:22
von kjd
@__blackjack__ Das würde bei mir die Strings alphabetisch sortieren. Gibt es eine Möglichkeit konkret nach den Zahlen zu sortieren?
Re: zip-Liste sortieren
Verfasst: Montag 11. Mai 2020, 09:25
von Sirius3
Indem man die Zahlen auch als Zahlen im Speicher hat. Da Du sehr großzügig mit Anführungszeichen umgehst, kann das aber auch keiner wissen.
Re: zip-Liste sortieren
Verfasst: Montag 11. Mai 2020, 09:46
von kjd
Tut mir Leid die habe ich im Beispiel vergessen. Ich glaube das Problem bei mir ist, dass die strings (in Anführungszeichen) bei mir an den ersten zwei Stellen kommen und meine Zahlen (ohne Anführungszeichen) an dritter. Ich würde diese Reihenfolge aber beibehalten wollen. Kann ich so nicht nach den Zahlen sortieren?
Re: zip-Liste sortieren
Verfasst: Montag 11. Mai 2020, 10:02
von Jankie
Doch, wie schon von __blackjack__ gesagt mit sorted().
Dein Beispiel, also wo nach der dritten Stelle im Tuple sortiert wird steht sogar genau so wie du es brauchst in der Doku:
https://docs.python.org/3/howto/sorting.html#key-functions
Re: zip-Liste sortieren
Verfasst: Montag 11. Mai 2020, 10:09
von kjd
Es war tatsächlich sorted, was aber bei mir in der Anwendung noch zusätzlich gefehlt hatte war "lambda" und ein custom key. Habs aber jetzt, danke!
Re: zip-Liste sortieren
Verfasst: Montag 11. Mai 2020, 11:11
von DeaD_EyE
Anstatt lambda kann man operator.itemgetter(0) als key benutzen. Sieht eleganter aus. Die Funktion itemgetter liefert eine Funktion zurück, die beim Aufruf den entsprechenden Index/Key zurück liefert. In dem Fall ist es der Index 0.