Unterlisten in 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
Diablo168
User
Beiträge: 6
Registriert: Sonntag 20. Mai 2018, 20:17

Hi

Ich habe in meinem Programm eine Liste mit mehreren Unterlisten darin. Nun möchte ich diese untergeordneten Listen sortieren, und zwar nach dem jeweils 5. Wert in jeder untergeordneten Liste

zum Beispiel die Liste ist folgendermaßen aufgebaut:
Liste = [[1,2,3,4,5,6,7,8], [8,7,6,5,4,3,2,1], [8,8,8,8,8,8,8,8]]

nach dem sortieren sollte sie dann so aussehen:
Liste = [[8,7,6,5,4,3,2,1], [1,2,3,4,5,6,7,8], [8,8,8,8,8,8,8,8]]

Ich bin noch relativ unerfahren mit Python und deshalb habe ich leider keine Ahnung, wie ich das hinbekomme. Kann mir das bitte einer von euch erklären?

Danke im vorraus :)
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

`sort` kennt das Argument `key` mit dem man eine Funktion angeben kann, die den Wert liefert, nach dem sortiert werden soll, also bei Dir den vierten Eintrag einer Liste.
Diablo168
User
Beiträge: 6
Registriert: Sonntag 20. Mai 2018, 20:17

Das habe ich auch schon herausgefunden... Allerdings habe ich noch nicht gefunden, welche key-Argumente es alles gibt, und vor allem wie ich das meinem Programm verständlich mache, dass es genau diese werte vergleichen soll...
narpfel
User
Beiträge: 644
Registriert: Freitag 20. Oktober 2017, 16:10

Moin,

sowohl die `sort`-Methode von Listen (verändert die Liste) als auch die Funktion `sorted` (erstellt eine neue Liste) akzeptiert eine Funktion als Schlüsselwortargument `key`, die die Sortierreihenfolge steuert. Hier gibt es ein kleines Sortier-Tutorial. Außerdem wäre `operator.itemgetter` vielleicht noch einen Blick wert.

Die `key`-Funktion kann man sich beliebig selbst schreiben. Es muss einfach eine Funktion sein, die für jedes Element deiner Liste ein Ergebnis (den Schlüssel) liefert, sodass alle Schlüssel untereinander sortiert werden können.
Diablo168
User
Beiträge: 6
Registriert: Sonntag 20. Mai 2018, 20:17

Danke für die schnellen Antworten. Ich glaube das bringt mich weiter... Falls nicht, melde ich mich noch mal ;)
Antworten