zip-Liste sortieren

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
kjd
User
Beiträge: 12
Registriert: Freitag 12. Juli 2019, 09:48

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?
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@kjd: Mit der `sort()`-Methode auf Listen‽
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
kjd
User
Beiträge: 12
Registriert: Freitag 12. Juli 2019, 09:48

@__blackjack__ Das würde bei mir die Strings alphabetisch sortieren. Gibt es eine Möglichkeit konkret nach den Zahlen zu sortieren?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
kjd
User
Beiträge: 12
Registriert: Freitag 12. Juli 2019, 09:48

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?
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

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
kjd
User
Beiträge: 12
Registriert: Freitag 12. Juli 2019, 09:48

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!
Benutzeravatar
DeaD_EyE
User
Beiträge: 1240
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten