Listen 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
Luecx
User
Beiträge: 15
Registriert: Dienstag 4. März 2014, 12:16

Hallo Liebes Forum,
ich hab ein kleines Problem, ich will eine Liste in der immer 2 weitere Objekte eine Liste ergeben nach Zahlen sortiert werden,

[('9975', ['Finn']), ('32177', ['Test']), ('901428', ['Finn']), ('10347', ['Finn'])]

so sieht die Liste aus, und jetzt soll es halt sortiert werden, also das dann die größte Zahl mit seinem Namen steht, dann die zweitgrößte etc...
hat jemand eine Lösung?

mfg
BlackJack

@Luecx: Dafür ist die `sort()`-Methode auf Listen da, oder die `sorted()`-Funktion wenn man die originale Liste nicht verändern möchte.

Da die Zahlen als Zeichenketten vorliegen kann man sie nicht einfach nur mit ``sort()`` sortieren, sondern muss noch als `key`-Argument eine Funktion übergeben die aus einem Element der Liste einen Sortierschlüssel berechnet. Also zum Beispiel das erste Element in einem Listenelement in eine Zahl wandelt und zurück gibt. Da absteigend sortiert werden soll, muss man noch das `reverse`-Argument von `sort()` bemühen.
Luecx
User
Beiträge: 15
Registriert: Dienstag 4. März 2014, 12:16

BlackJack hat geschrieben:@Luecx: Dafür ist die `sort()`-Methode auf Listen da, oder die `sorted()`-Funktion wenn man die originale Liste nicht verändern möchte.

Da die Zahlen als Zeichenketten vorliegen kann man sie nicht einfach nur mit ``sort()`` sortieren, sondern muss noch als `key`-Argument eine Funktion übergeben die aus einem Element der Liste einen Sortierschlüssel berechnet. Also zum Beispiel das erste Element in einem Listenelement in eine Zahl wandelt und zurück gibt. Da absteigend sortiert werden soll, muss man noch das `reverse`-Argument von `sort()` bemühen.

ehhmm. ich bin grad erst dabei das ganze mit key argumenten uns so zu lernen... wie genau geht das? :S
BlackJack

@Luecx: Das ist eine Funktion die ein Argument bekommt und zwar ein Element aus der Liste die sortiert werden soll. Und diese Funktion muss einen Wert für dieses Element zurückgeben nach dem es dann im Ergebnis sortiert werden soll. In Deinem Beispiel soll die Position eines Elements von der ersten ”Zahl” im Tupel abhängen, also ist das der Wert den die Funktion zurückgeben sollte.

Code: Alles auswählen

data.sort(key=lambda x: int(x[0]))
Luecx
User
Beiträge: 15
Registriert: Dienstag 4. März 2014, 12:16

BlackJack hat geschrieben:@Luecx: Das ist eine Funktion die ein Argument bekommt und zwar ein Element aus der Liste die sortiert werden soll. Und diese Funktion muss einen Wert für dieses Element zurückgeben nach dem es dann im Ergebnis sortiert werden soll. In Deinem Beispiel soll die Position eines Elements von der ersten ”Zahl” im Tupel abhängen, also ist das der Wert den die Funktion zurückgeben sollte.

Code: Alles auswählen

data.sort(key=lambda x: int(x[0]))
achsooo :) vielen dank :)
Antworten