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!
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:
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.