Wie kann ich Sortiere Tupel von reverse, noch brechen Beziehungen nicht Umgekehrt? (Python -)
Wenn ich eine Liste von Tupeln:
results = [('10', 'Mary'), ('9', 'John'), ('10', 'George'), ('9', 'Frank'), ('9', 'Adam')]
Wie kann ich die Liste Sortieren, wie Sie vielleicht in ein scoreboard - solche, die es werden Art der Partitur vom größten bis zum kleinsten, aber Bindungen brechen alphabetisch nach den Namen?
So nach der Art, die Liste sollte so Aussehen:
results = [('10', 'George'), ('10', 'Mary'), ('9', 'Adam'), ('9', 'Frank'), ('9', 'John')]
Im moment alles, was ich tun kann, ist results.sort(reverse=True)
, aber bricht Bande rückwärts alphabetisch zu...
Jede Hilfe wäre sehr geschätzt werden. Danke!
'10' < '9' is True
und'Adam' < 'Frank' is True
. Ich denke, Sie möchten, machen'10' > '9'
?- Warum haben Sie die Zeichenfolgen anstelle von int-Werten für Ihre zahlen?
- Das ist ein guter Punkt!! Ich glaube nicht, dass. Alle meine zahlen sind Ganzzahlen jetzt, aber ich bin immer noch unsicher, wie Sie zu Sortieren, reverse und break-Beziehungen non-reverse...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, das zu erreichen, was Sie wollen, ist auf die Tatsache, dass python-sort ist stabil. Dies ermöglicht zum ersten Sortieren alphabetisch und dann nach Punkten:
Den ersten Sortierung sortiert alphabetisch, in aufsteigender Reihenfolge. Die zweite Art sortiert nach Bewertung, absteigend, die Beibehaltung der relativen Ordnung der Elemente mit gleichen Punktzahl.
Können Sie dies tun, zu tun, auch komplexere Arten. Denken Sie daran, dass Sie müssen zuerst Sortieren Sie nach der sekundären Schlüssel, und dann mit dem ersten Schlüssel. (Wenn Sie drei Tasten, zuerst Sortieren Sie nach der Dritten, dann nach der zweiten, und schließlich, indem Sie die main-Taste).
Wenn Sie nicht wollen, zu nennen
sort
zweimal müssen Sie schreiben ein komplexerkey
Funktion. So etwas wie:Insbesondere, jedes mal, wenn Sie etwas sortiert in lexikographischer Reihenfolge(wie strings, Tupel, Listen usw.), Sie können umkehren, um durch ändern der Vorzeichen aller Elemente.
sorted(results, key=lambda x: (-x[0], x[1]))
sort
Methode akzeptieren, optionalkey
parameter.Müssen Sie zum konvertieren von string zu Zahl:
Können Sie sehr granular Steuern, wie das Sortieren der einzelnen Werte in einem Tupel mit
sort
Methodekey
parameter. Zum Beispiel:Nur mit
sorted
sollte ausreichenStandard
cmp
Funktion überprüft Vorrang eines Tupels durch einen Vergleich jedes Mitglied der Tupel, die von 0 bis n, in dieser Reihenfolge