Nach mehreren Feldern sortieren
Lösen Sie Gleichstände mit Tupel-Schlüsseln und reverse auf
Nach mehreren Feldern sortieren ist eine kostenlose Competitive Programming Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Competitive Programming Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Competitive Programming Academy-Kurs umfasst insgesamt 4 Lektionen.
Wenn ein Schlüssel nicht ausreicht
Manchmal sind Elemente im ersten Feld gleich und Sie müssen diese Gleichstände auflösen. Die Lösung ist ein Tupel-Schlüssel, der die Felder in Prioritätsreihenfolge aufführt.
Tupel werden von links nach rechts verglichen
Python vergleicht Tupel Element für Element: Zuerst wird das erste Element geprüft, und das zweite wird nur betrachtet, wenn das erste gleich ist.
print((1, 9) < (1, 2)) # False
print((1, 2) < (2, 0)) # TrueEin Tupel-Schlüssel für zwei Felder
Geben Sie aus Ihrem key ein Tupel zurück, um zuerst nach dem ersten und anschließend nach dem zweiten Feld zu sortieren. So werden Personen zuerst nach Alter und dann nach Namen sortiert.
people.sort(key=lambda p: (p.age, p.name))Primäre und sekundäre Sortierreihenfolge
Das am weitesten links stehende Feld bestimmt die primäre Sortierung, das nächste löst Gleichstände auf. Ändern Sie die Reihenfolge im Tupel, um festzulegen, welches Feld Vorrang hat.
data = [(2, "b"), (1, "z"), (1, "a")]
print(sorted(data))
# [(1, 'a'), (1, 'z'), (2, 'b')]Aufsteigend und absteigend kombinieren
Um ein Feld aufsteigend und ein anderes absteigend zu sortieren, negieren Sie innerhalb des Tupel-Schlüssels das numerische Feld, das absteigend sortiert werden soll.
items.sort(key=lambda x: (x.group, -x.score))Der Negationstrick funktioniert nur mit Zahlen
Der Trick mit dem Minuszeichen funktioniert nur bei Zahlen. Um ein Zeichenkettenfeld umzukehren, müssen Sie Sortierungen schrittweise kombinieren, statt zu negieren.
Mit stabiler Sortierung können Sie kombinieren
Da die Sortierung stabil ist, können Sie zuerst nach dem untergeordneten Schlüssel und anschließend nach dem übergeordneten Schlüssel sortieren, wobei Gleichstände korrekt geordnet bleiben.
rows.sort(key=lambda r: r.name)
rows.sort(key=lambda r: r.age, reverse=True)Kombinieren oder ein Tupel verwenden
Ein Tupel-Schlüssel ist für einfache Fälle schneller und übersichtlicher. Schrittweise Sortierungen sind besonders nützlich, wenn ein Zeichenkettenfeld aufsteigend und ein anderes absteigend sortiert werden soll.
itemgetter für mehr Geschwindigkeit
Für Tupel mit indexbasierten Feldern ist itemgetter ein übersichtlicher und schneller Schlüssel. Damit greifen Sie mehrere Felder gleichzeitig in Prioritätsreihenfolge heraus.
from operator import itemgetter
rows.sort(key=itemgetter(1, 0))Gleichstandsauflösungen machen die Ausgabe deterministisch
Ein letzter eindeutiger Gleichstandsauflöser wie eine id macht die Ausgabe über mehrere Durchläufe hinweg stabil, was Prüfer mit strengen Vergleichsregeln schätzen.
Planen Sie Ihren Schlüssel vor dem Programmieren
Lesen Sie die Aufgabe und notieren Sie die Sortierfelder in ihrer Reihenfolge. Ein klarer Tupel-Schlüssel verwandelt einen komplizierten Vergleich in eine kurze Zeile.
Kurzer Check
Sie möchten Studierende zuerst nach aufsteigender Note und anschließend nach aufsteigendem Namen sortieren.
Zusammenfassung
Sie können Gleichstände mit einem Tupel-Schlüssel auflösen, Zahlen für eine absteigende Sortierung negieren und stabile Sortierungen für gemischte Richtungen kombinieren. Gleichstandsauflösungen halten die Ausgabe übersichtlich. ✅
Häufig gestellte Fragen
Ist die Lektion „Nach mehreren Feldern sortieren“ kostenlos?
Ja — der vollständige Text von „Nach mehreren Feldern sortieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Competitive Programming Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Competitive Programming Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Nach mehreren Feldern sortieren“?
Lösen Sie Gleichstände mit Tupel-Schlüsseln und reverse auf Du übst Competitive Programming Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Competitive Programming Academy zu starten?
Keine Vorkenntnisse erforderlich. Competitive Programming Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Nach mehreren Feldern sortieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Competitive Programming Academy-Lektion Code schreiben und ausführen?
Ja. Jede Competitive Programming Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- sorted() und die key-Funktion
- Nach mehreren Feldern sortieren
- Benutzerdefinierte Reihenfolge mit functools.cmp_to_key
- Warum Sortieren Lösungen ermöglicht