Wie kann ich Tupel nach Reverse sortieren, aber nicht umgekehrt? (Python)

8

Wenn ich eine Tupelliste habe:

%Vor%

Wie kann ich die Liste so sortieren, wie Sie sie in einem Scoreboard sehen können? So wird der Score vom größten zum kleinsten sortiert, aber Bindungen alphabetisch nach Namen getrennt?

Nach der Sortierung sollte die Liste wie folgt aussehen:

%Vor%

Im Moment kann ich nur results.sort(reverse=True) machen, bricht aber auch die Beziehungen umgekehrt alphabetisch ...

Jede Hilfe wäre sehr willkommen. Danke!

    
chillman 24.08.2013, 04:42
quelle

4 Antworten

14

Der einfachste Weg, um das zu erreichen, was Sie wollen, ist die Tatsache, dass python sort stabil ist. Dies erlaubt zuerst alphabetisch und dann nach Punkten zu sortieren:

%Vor%

Die erste Sortierung erfolgt alphabetisch in aufsteigender Reihenfolge. Die zweite Sortierung sortiert nach Punkten in absteigender Reihenfolge, wobei die relative Reihenfolge der Elemente mit gleichem Ergebnis beibehalten wird.

Sie können dies tun, um noch komplexere Sortierungen durchzuführen. Denken Sie daran, dass Sie zuerst nach der sekundären Taste und dann nach der ersten Taste sortieren müssen. (Wenn Sie drei Schlüssel haben, sortieren Sie zuerst nach dem dritten, dann nach dem zweiten und zuletzt nach dem Hauptschlüssel).

Wenn Sie sort nicht zweimal aufrufen möchten, müssen Sie eine komplexere key -Funktion schreiben. Etwas wie:

%Vor%

Insbesondere können Sie jedes Mal, wenn Sie etwas in lexikographischer Reihenfolge sortiert haben (wie Strings, Tupel, Listen usw.), die Reihenfolge umkehren, indem Sie das Vorzeichen auf alle Elemente ändern.

    
Bakuriu 24.08.2013, 06:50
quelle
5

sort method akzeptiert optionalen key Parameter.

  Der Schlüssel

gibt eine Funktion eines Arguments an, die zum Extrahieren von a verwendet wird   Vergleichsschlüssel aus jedem Listenelement

Sie müssen die Zeichenfolge in Zahl umwandeln:

%Vor%     
falsetru 24.08.2013 04:46
quelle
0

Die Verwendung von sorted sollte ausreichen

%Vor%

default cmp function prüft den Vorrang eines Tupels, indem jedes Mitglied des Tupels von 0 bis n in dieser Reihenfolge verglichen wird

    
Anycorn 24.08.2013 04:45
quelle
0

Sie können sehr genau steuern, wie die einzelnen Werte in einem Tupel mit dem Parameter sort der key -Methode zu sortieren sind. Zum Beispiel:

%Vor%     
AnukuL 17.04.2017 08:33
quelle

Tags und Links