Python Programming

Effizientes Sortieren von Python-Dictionaries nach Wert

Spread the love

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

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert