So sortieren Sie ein Wörterbuch nach Wert in Python

Erfahren Sie, wie Sie ein Python-Wörterbuch nach seinen Werten sortieren. Entdecken Sie das Sortieren mit sorted(), benutzerdefinierten Schlüssel-Lambdas und dem Erstellen geordneter Diktatstrukturen.

Probieren Sie diese Lösung im Editor aus

Übersicht

Während Wörterbücher in erster Linie für schnelle Suchvorgänge mithilfe eindeutiger Schlüssel erstellt werden, müssen Sie Wörterbuchelemente häufig anhand ihrer Werte sortieren. Sortieren Sie beispielsweise Schüler nach ihren Prüfungsnoten, listen Sie Produkte vom günstigsten zum teuersten auf oder ordnen Sie die Wortanzahl nach Häufigkeit.

In Python können Sie ein Wörterbuch nicht direkt direkt sortieren, da Standard-Wörterbuchstrukturen keine Sortiermethoden wie Listen unterstützen. Stattdessen besteht der Standardansatz darin, die Elemente des Wörterbuchs als Tupel mithilfe der Methode „.items()“ abzurufen, diese Tupel mithilfe der integrierten Funktion „sorted()“ mit einem benutzerdefinierten Sortierschlüssel zu sortieren und dann das Wörterbuch aus den sortierten Elementen neu zu erstellen.

Der Sortierschlüssel ist normalerweise eine Lambda-Funktion, die das zweite Element des Tupels (den Wörterbuchwert) zurückgibt: „key=lambda item: item[1]“. SeitPython 3.7+ behalten Standardwörterbücher die Einfügereihenfolge bei. Wenn Sie die sortierte Liste der Tupel mit dem Konstruktor „dict()“ wieder in ein Wörterbuch umwandeln, erhalten Sie ein sauberes, sortiertes Wörterbuch, das zur Iteration bereit ist.

Code- und Ausführungsausgabe

Dieses Skript demonstriert das Sortieren eines Wörterbuchs mit Testergebnissen nach Werten in aufsteigender und absteigender Reihenfolge mithilfe von Lambda-Funktionen.

sort_dict_values.py
Versuchen Sie es im Editor
scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)

# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)

# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)

# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)
Terminal-Ausgabe
Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}

Schrittweise Umsetzung

  • Rufen Sie my_dict.items() auf, um Schlüssel-Wert-Paare als Liste von Tupeln abzurufen.
  • Übergeben Sie die Wörterbuchelemente an die Funktion sorted().
  • Geben Sie key=lambda item: item[1] an, um die Funktion sorted() anzuweisen, basierend auf dem Wert (zweites Element jedes Tupels) zu sortieren.
  • Übergeben Sie „reverse=True“ als optionales Argument, um die Elemente in absteigender Reihenfolge zu sortieren.
  • Erstellen Sie das sortierte Wörterbuch neu, indem Sie die sortierte Liste der Tupel an den dict()-Konstruktor übergeben.

Häufig gestellte Fragen

Was bedeutet key=lambda item: item[1]?

Die Funktion sorted() übergibt jedes Element der Elementsequenz (ein Tupel von (Schlüssel, Wert)) an die Lambda-Funktion. item[1] extrahiert die Wertkomponente und weist Python an, die Tupel nach Wert zu sortieren.

Beeinflusst das Sortieren eines Wörterbuchs dessen Schlüsselsuchgeschwindigkeit?

Nein, die Schlüsselsuche bleibt bei einer durchschnittlichen Zeitkomplexität von O(1), da durch die Sortierung nur die Iterationssequenz und nicht die zugrunde liegende Hash-Tabellenstruktur geändert wird.

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.