Python-Dictionaries sind zwar leistungsstark, aber von Natur aus ungeordnet. Das bedeutet, dass man ein Dictionary nicht direkt sortieren kann; man kann jedoch leicht eine sortierte Darstellung basierend auf seinen Werten erhalten. Dieser Artikel untersucht verschiedene effiziente Methoden, um dies zu erreichen und geht auf unterschiedliche Bedürfnisse und Python-Versionen ein.
Inhaltsverzeichnis
- Sortiere Werte extrahieren
- Sortierung mit
operator.itemgetter
- Sortierung mit einer Lambda-Funktion
- Sortiere Dictionaries erstellen
Sortiere Werte extrahieren
Wenn Sie nur die sortierten Werte selbst benötigen, ohne die Schlüssel-Wert-Beziehungen zu erhalten, ist dies der einfachste und effizienteste Ansatz:
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_values = sorted(my_dict.values())
print(sorted_values) # Ausgabe: [1, 2, 5, 8]
Die eingebaute Funktion sorted()
arbeitet direkt mit den Werten des Dictionaries und gibt eine neue sortierte Liste zurück. Diese Methode ist ideal, wenn Sie die ursprünglichen Schlüssel-Wert-Paarungen nicht beibehalten müssen.
Sortierung mit operator.itemgetter
Für mehr Kontrolle, insbesondere beim Sortieren in absteigender Reihenfolge, bietet operator.itemgetter
eine saubere und effiziente Lösung. Es erstellt ein aufrufbares Objekt, das den Wert aus jedem Schlüssel-Wert-Paar extrahiert:
import operator
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_items = sorted(my_dict.items(), key=operator.itemgetter(1))
print(sorted_items) # Ausgabe: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]
sorted_items_desc = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)
print(sorted_items_desc) # Ausgabe: [('cherry', 8), ('apple', 5), ('banana', 2), ('date', 1)]
Dies sortiert die Dictionary-Elemente (Schlüssel-Wert-Paare) basierend auf dem Wert (dem zweiten Element, Index 1, jedes Tupels). reverse=True
ermöglicht die Sortierung in absteigender Reihenfolge. Das Ergebnis ist eine Liste von (Schlüssel, Wert)-Tupeln.
Sortierung mit einer Lambda-Funktion
Eine Lambda-Funktion bietet eine prägnante, Inline-Alternative zum Definieren des Sortierschlüssels:
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_items = sorted(my_dict.items(), key=lambda item: item[1])
print(sorted_items) # Ausgabe: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]
sorted_items_desc = sorted(my_dict.items(), key=lambda item: item[1], reverse=True)
print(sorted_items_desc) # Ausgabe: [('cherry', 8), ('apple', 5), ('banana', 2), ('date', 1)]
Dies erreicht das gleiche Ergebnis wie operator.itemgetter
, aber die Schlüsselfunktion wird direkt innerhalb von sorted()
definiert, was eine kompaktere Lösung für einfachere Fälle bietet.
Sortiere Dictionaries erstellen
Wenn Sie ein Dictionary benötigen, das die sortierte Reihenfolge beibehält, behalten Python 3.7+ Dictionaries die Einfügeordnung bei. Für ältere Versionen oder wenn eine garantierte Ordnung entscheidend ist, können Sie eine Dictionary-Comprehension verwenden:
my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}
sorted_dict = {k: v for k, v in sorted(my_dict.items(), key=lambda item: item[1])}
print(sorted_dict) # Ausgabe: {'date': 1, 'banana': 2, 'apple': 5, 'cherry': 8}
Dies erstellt effizient ein neues Dictionary mit den Schlüssel-Wert-Paaren, die nach den sortierten Werten geordnet sind.
Dieser Artikel hat verschiedene Techniken zum Sortieren von Python-Dictionaries nach Wert vorgestellt und Lösungen für verschiedene Kontexte und Python-Versionen angeboten. Wählen Sie die Methode, die am besten zu Ihren spezifischen Anforderungen und der von Ihnen verwendeten Python-Version passt.