- 1 1. Einführung
- 2 2. Methoden zum Sortieren von Dictionaries
- 3 3. Rekonstruktion des Sortierergebnisses
- 4 4. Anwendungsbeispiele
- 5 5. Hinweise und Best Practices
- 6 6. Zusammenfassung
- 7 7. FAQ
- 7.1 Q1: Kann man ein Dictionary direkt sortieren?
- 7.2 Q2: Was ist der Unterschied zwischen OrderedDict und einem normalen Dictionary?
- 7.3 Q3: Wenn die Schlüssel oder Werte des Dictionaries komplexe Datentypen sind, wie sortiert man dann?
- 7.4 Q4: Wie macht man das Sortierungsergebnis umgekehrt?
- 7.5 Q5: Wie setzt man das Sortierungsergebnis zurück?
1. Einführung
Python wird aufgrund seiner einfachen und flexiblen Syntax von vielen Entwicklern geschätzt. Insbesondere das «Dictionary (dict)» ist eine praktische Datenstruktur zur Verwaltung von Schlüssel-Wert-Paaren und effizientisiert die Organisation und den Zugriff auf Daten. Allerdings entsteht beim Erstellen von Programmen häufig der Bedarf, ein Dictionary in einer bestimmten Reihenfolge zu sortieren.
Zum Beispiel, wenn man eine Notentabelle für Schüler oder eine Preistabelle für Produkte sortieren möchte, ist es notwendig, die Daten basierend auf der Reihenfolge der Schlüssel oder Werte auszurichten. In solchen Situationen ist die «Sortierungsfunktion für Dictionaries» in Python hilfreich.
In diesem Artikel erklären wir konkrete Methoden, um Python-Dictionaries nach Schlüsseln oder Werten zu sortieren. Wir erläutern es detailliert von den Grundlagen bis zu fortgeschrittenen Beispielen, damit es für Anfänger bis Mittelstufe verständlich ist. Bitte lesen Sie bis zum Ende.
2. Methoden zum Sortieren von Dictionaries
Um ein Dictionary in Python zu sortieren, nutzt man hauptsächlich diesorted()
-Funktion. Hier erklären wir schrittweise die Sortierungsmethoden für Schlüssel und Werte.
2.1 Methode zum Sortieren eines Dictionaries nach Schlüsseln
Beim Sortieren eines Dictionaries nach Schlüsseln verwendet man den folgenden Code.
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_key = dict(sorted(sample_dict.items(), key=lambda x: x[0]))
print(sorted_by_key)
Ergebnis:
{'apple': 3, 'banana': 1, 'cherry': 2}
Erläuterung des Codes:
sample_dict.items()
erhält das Dictionary in der Form von Tupeln aus Schlüssel und Wert.- Die
sorted()
-Funktion sortiert die Items basierend auf dem Schlüssel (x[0]
). - Zuletzt wird mit
dict()
neu aufgebaut, um ein neues Dictionary zu erzeugen.
Mit dieser Methode wird alphabetisch sortiert, daher ist sie nützlich, wenn man die Reihenfolge der Schlüssel kontrollieren möchte.
2.2 Methode zum Sortieren eines Dictionaries nach Werten
Für die Sortierung basierend auf Werten verwendet man den folgenden Code.
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_value = dict(sorted(sample_dict.items(), key=lambda x: x[1]))
print(sorted_by_value)
Ergebnis:
{'banana': 1, 'cherry': 2, 'apple': 3}
Erläuterung des Codes:
- Im Teil
key=lambda x: x[1]
wird nach dem Wert sortiert. - Da von kleinen Werten aufwärts sortiert wird, eignet es sich für Ranking-Anzeigen oder numerische Vergleiche.
2.3 Sortieren mit dem operator
-Modul
Um effizienter zu sortieren, kann man dasoperator
-Modul von Python nutzen.
from operator import itemgetter
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_value = dict(sorted(sample_dict.items(), key=itemgetter(1)))
print(sorted_by_value)
Ergebnis:
{'banana': 1, 'cherry': 2, 'apple': 3}
Erläuterung des Codes:
itemgetter(1)
erhält das Element am Index 1 (Wert).- Da die Performance etwas besser ist als bei der
lambda
-Funktion, eignet es sich für große Datenmengen.

3. Rekonstruktion des Sortierergebnisses
Das Ergebnis des Sortierens eines Dictionarys wird normalerweise als Liste von Tupeln zurückgegeben. Hier erklären wir, wie man es wieder in Dictionary-Form umwandelt.
3.1 Erstellen eines sortierten Dictionarys
sorted_items = [('banana', 1), ('cherry', 2), ('apple', 3)]
reconstructed_dict = dict(sorted_items)
print(reconstructed_dict)
Ergebnis:
{'banana': 1, 'cherry': 2, 'apple': 3}
So kann man, indem man die Tupel-Liste an diedict()
-Funktion übergibt, einfach wieder in Dictionary-Form zurückkehren.
3.2 Nutzung von OrderedDict
Ab Python 3.7 behalten normale Dictionarys die Reihenfolge bei, aber wenn man die Reihenfolge expliziter verwalten möchte, verwendet manOrderedDict
.
from collections import OrderedDict
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_value = OrderedDict(sorted(sample_dict.items(), key=lambda x: x[1]))
print(sorted_by_value)
Ergebnis:
OrderedDict([('banana', 1), ('cherry', 2), ('apple', 3)])
Diese Methode ist besonders nützlich in Situationen, in denen die Reihenfolge der Daten wichtig ist.
4. Anwendungsbeispiele
Hier stellen wir Anwendungsbeispiele für das Sortieren von Python-Dictionaries vor. Insbesondere erklären wir detailliert, wie man Listen von Dictionaries sortiert und Sortierungen mit mehreren Bedingungen durchführt.
4.1 Sortieren einer Liste von Dictionaries nach einem bestimmten Schlüssel
In Python ist es möglich, eine Liste von Dictionaries nach einem bestimmten Schlüssel zu sortieren. Diese Funktion ist sehr nützlich, um Suchergebnisse aus Datenbanken oder JSON-Daten zu organisieren.Beispiel 1: Sortieren von Studentendaten nach Alter
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 23}
]
sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
Ergebnis:
[{'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 23}, {'name': 'Alice', 'age': 25}]
Code-Erklärung:
- Mit
key=lambda x: x['age']
wird nach demage
-Schlüssel in jedem Dictionary sortiert. sorted()
gibt eine neue Liste zurück, sodass die ursprünglichen Daten unverändert bleiben.
4.2 Sortieren nach mehreren Schlüsseln
Um nach mehreren Bedingungen zu sortieren, kann man Tupel als Schlüssel verwenden.Beispiel 2: Sortieren nach Name und Alter
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 23},
{'name': 'Alice', 'age': 20}
]
sorted_students = sorted(students, key=lambda x: (x['name'], x['age']))
print(sorted_students)
Ergebnis:
[{'name': 'Alice', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 23}]
Code-Erklärung:
- Mit
key=lambda x: (x['name'], x['age'])
wird zuerst nach Name und dann nach Alter sortiert. - Durch die Verwendung von Tupel-Form kann die Priorität einfach festgelegt werden.
4.3 Angabe von aufsteigender und absteigender Reihenfolge
In Python kann man durch Hinzufügen vonreverse=True
zursorted()
-Funktion eine absteigende Sortierung durchführen.Beispiel 3: Sortieren nach Alter in absteigender Reihenfolge
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 23}
]
sorted_students = sorted(students, key=lambda x: x['age'], reverse=True)
print(sorted_students)
Ergebnis:
[{'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 23}, {'name': 'Bob', 'age': 22}]
4.4 Sortieren verschachtelter Dictionaries
Es ist auch möglich, verschachtelte Dictionaries zu sortieren.Beispiel 4: Sortieren verschachtelter Daten nach Punkten
data = {
'team1': {'points': 50, 'rank': 2},
'team2': {'points': 40, 'rank': 3},
'team3': {'points': 60, 'rank': 1}
}
sorted_data = dict(sorted(data.items(), key=lambda x: x[1]['points']))
print(sorted_data)
Ergebnis:
{'team2': {'points': 40, 'rank': 3}, 'team1': {'points': 50, 'rank': 2}, 'team3': {'points': 60, 'rank': 1}}
Code-Erklärung:
- Mit
x[1]['points']
wird nach dempoints
in jedem Dictionary sortiert. - Auch bei verschachtelten Datenstrukturen kann man durch Angabe des notwendigen Schlüssels einfach sortieren.

5. Hinweise und Best Practices
Beim Sortieren von Dictionaries sollten Sie auf die folgenden Punkte achten.
5.1 Leistung bei großen Datenmengen
Die Sortierung von Dictionaries umfasst Listenoperationen, daher kann die Verarbeitungsgeschwindigkeit bei großen Datensätzen problematisch sein.Verbesserungsmaßnahmen:
operator.itemgetter
verwenden, um die Leistung zu optimieren.- Die Ergebnisse nach dem Sortieren zwischenspeichern, um dieselben Daten nicht wiederholt zu verarbeiten.
5.2 Unterschiede je nach Python-Version
Ab Python 3.7 behalten normale Dictionaries die Einfügereihenfolge bei, in früheren Versionen wird die Reihenfolge jedoch nicht garantiert.Gegenmaßnahmen:
- In älteren Versionen
OrderedDict
verwenden, um die Reihenfolge zu verwalten.
6. Zusammenfassung
In diesem Artikel haben wir verschiedene Methoden zur Sortierung von Python-Dictionaries (dict) erläutert. Von grundlegenden Sortiermethoden nach Schlüsseln oder Werten bis hin zu fortgeschrittenen Sortierungen von Listen oder verschachtelten Dictionaries und Sortierungen nach mehreren Bedingungen haben wir ein breites Spektrum abgedeckt.
Rückblick auf die Punkte:
- Grundlegende Sortiermethoden:
- Mit der
sorted()
-Funktion nach Schlüssel oder Wert sortieren. - Mit
lambda
-Funktionen oderoperator.itemgetter
effizient verarbeiten.
- Fortgeschrittene Beispiele:
- Listen von Dictionaries nach bestimmten Schlüsseln oder mehreren Bedingungen sortieren.
- Auch verschachtelte Dictionaries können nach bestimmten Schlüsseln sortiert werden.
- Hinweise:
- Bei großen Datenmengen die Performance berücksichtigen.
- Unterschiede im Verhalten je nach Version verstehen und bei Bedarf
OrderedDict
verwenden.
Die Sortierung von Python-Dictionaries ist eine unverzichtbare Fähigkeit für die Datenorganisation und -analyse. Nutzen Sie den Inhalt dieses Artikels als Referenz und wenden Sie ihn bitte in Ihren tatsächlichen Programmen an.
7. FAQ
Q1: Kann man ein Dictionary direkt sortieren?
A1:Python-Dictionaries behalten die Reihenfolge bei, aber sie können nicht direkt sortiert werden.sorted()
Funktion, um nach Schlüsseln oder Werten zu sortieren und ein neues Dictionary zu erstellen.
Q2: Was ist der Unterschied zwischen OrderedDict
und einem normalen Dictionary?
A2:Ab Python 3.7 behalten normale Dictionaries die Einfügereihenfolge bei, aberOrderedDict
bietet zusätzliche erweiterte Funktionen wie das Ändern oder Verschieben der Reihenfolge. Insbesondere in Versionen vor Python 3.6 istOrderedDict
notwendig, um die Reihenfolge zu erhalten.
Q3: Wenn die Schlüssel oder Werte des Dictionaries komplexe Datentypen sind, wie sortiert man dann?
A3:Dies kann durch Angabe eines benutzerdefinierten Sortierschlüssels gehandhabt werden. Zum Beispiel, um nach der Länge einer Zeichenkette oder einem Datumsformat zu sortieren, geben Sie die Bedingung mit einerlambda
-Funktion imkey
-Argument an.Beispiel:
data = {'a': [1, 2], 'b': [3], 'c': [1, 2, 3]}
sorted_data = dict(sorted(data.items(), key=lambda x: len(x[1])))
print(sorted_data)
Ergebnis:
{'b': [3], 'a': [1, 2], 'c': [1, 2, 3]}
Q4: Wie macht man das Sortierungsergebnis umgekehrt?
A4:Durch Hinzufügen vonreverse=True
zursorted()
-Funktion kann man leicht eine umgekehrte Sortierung durchführen.Beispiel:
data = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_data = dict(sorted(data.items(), key=lambda x: x[1], reverse=True))
print(sorted_data)
Ergebnis:
{'apple': 3, 'cherry': 2, 'banana': 1}
Q5: Wie setzt man das Sortierungsergebnis zurück?
A5:Da Dictionaries keine Reihenfolge haben, muss man, um die ursprüngliche Datenreihenfolge zu erhalten, Indizes oder Listen in Kombination verwenden, um sie zu verwalten. Alternativ kann manOrderedDict
verwenden, um die Reihenfolge zu erhalten.Beispiel:
from collections import OrderedDict
data = {'apple': 3, 'banana': 1, 'cherry': 2}
ordered_data = OrderedDict(data)
print(ordered_data)