Wie man ein Dictionary in Python nach Wert sortiert
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
- Verwenden Sie
sorted()
mit einem Lambda-Ausdruck, um Dictionaries nach Wert zu sortieren. - Setzen Sie
reverse=True
für eine Sortierung in absteigender Reihenfolge. - Verwenden Sie für ältere Python-Versionen
OrderedDict
, um die Reihenfolge beizubehalten.
Das Sortieren von Dictionaries nach ihren Werten ist eine häufige Aufgabe in Python, insbesondere wenn Sie Daten basierend auf zugehörigen Werten bewerten oder organisieren müssen. Dieser Leitfaden führt Sie durch verschiedene Methoden, um dies zu erreichen, und behandelt sowohl aufsteigende als auch absteigende Sortierungen.
Verständnis von Python-Dictionaries
Ein Python-Dictionary ist eine ungeordnete Sammlung von Schlüssel-Wert-Paaren. Während Dictionaries ab Python 3.7 die Einfügereihenfolge beibehalten, unterstützen sie keine direkte Sortierung. Um ein Dictionary nach seinen Werten zu sortieren, müssen Sie eine neue, sortierte Darstellung erstellen.
Sortieren eines Dictionaries nach Wert in aufsteigender Reihenfolge
Um ein Dictionary nach seinen Werten in aufsteigender Reihenfolge zu sortieren, können Sie die Funktion sorted()
zusammen mit einer Lambda-Funktion verwenden:
student_scores = { 'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85 } sorted_scores = dict(sorted(student_scores.items(), key=lambda item: item[1])) print(sorted_scores)
Ausgabe:
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}
In diesem Beispiel:
student_scores.items()
gibt ein View-Objekt der Dictionary-Elemente zurück.sorted()
sortiert diese Elemente basierend auf dem zweiten Element jedes Tupels (d. h. dem Wert).dict()
konvertiert die sortierte Liste von Tupeln zurück in ein Dictionary.
Sortieren eines Dictionaries nach Wert in absteigender Reihenfolge
Um das Dictionary in absteigender Reihenfolge zu sortieren, setzen Sie den Parameter reverse
der Funktion sorted()
auf True
:
sorted_scores_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True)) print(sorted_scores_desc)
Ausgabe:
{'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}
Dieser Ansatz ist nützlich, wenn Sie Top-Performer oder höchste Werte identifizieren müssen.
Alternative Methode mit operator.itemgetter
Eine andere Möglichkeit, ein Dictionary nach Wert zu sortieren, ist die Verwendung der Funktion itemgetter
aus dem Modul operator
:
import operator sorted_scores = dict(sorted(student_scores.items(), key=operator.itemgetter(1))) print(sorted_scores)
Diese Methode kann effizienter und lesbarer sein, insbesondere bei komplexeren Sortierszenarien.
Überlegungen für ältere Python-Versionen
In Python-Versionen vor 3.7 behalten Dictionaries die Einfügereihenfolge nicht bei. Um die sortierte Reihenfolge in solchen Fällen beizubehalten, können Sie OrderedDict
aus dem Modul collections
verwenden:
from collections import OrderedDict sorted_scores = OrderedDict(sorted(student_scores.items(), key=lambda item: item[1])) print(sorted_scores)
Dies stellt sicher, dass die Reihenfolge der Elemente gemäß der Sortierung beibehalten wird.
Zusammenfassung
- Aufsteigende Reihenfolge: Verwenden Sie
sorted()
mit einer Lambda-Funktion oderoperator.itemgetter(1)
. - Absteigende Reihenfolge: Setzen Sie
reverse=True
in der Funktionsorted()
. - Ältere Python-Versionen: Verwenden Sie
OrderedDict
, um die sortierte Reihenfolge beizubehalten.
Durch Anwenden dieser Methoden können Sie Dictionaries effektiv nach ihren Werten sortieren, um verschiedene Datenverarbeitungsanforderungen zu erfüllen.
FAQs
Nein, Dictionaries sind in Bezug auf die Reihenfolge unveränderlich; das Sortieren gibt ein neues Dictionary zurück.
Die ursprüngliche Einfügereihenfolge wird für Schlüssel mit gleichen Werten beibehalten.
itemgetter
kann etwas schneller und sauberer sein, um nach Index zu sortieren.
Wir sind Leapcell, Ihre erste Wahl für das Hosting von Python-Projekten.
Leapcell ist die Serverless-Plattform der nächsten Generation für Webhosting, asynchrone Aufgaben und Redis:
Multi-Sprachen-Unterstützung
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Stellen Sie unbegrenzt Projekte kostenlos bereit
- zahlen Sie nur für die Nutzung - keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 US-Dollar unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatische CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für umsetzbare Erkenntnisse.
Mühelose Skalierbarkeit und hohe Leistung
- Automatische Skalierung zur einfachen Bewältigung hoher Parallelität.
- Kein operativer Overhead - konzentrieren Sie sich einfach auf das Bauen.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ