Dictionaries in Python: Daten mit Schlüsseln verwalten
Dictionaries sind eine der mächtigsten Datenstrukturen in Python. Hier lernst du, wie du Daten über Schlüssel statt über Positionen verwaltest.
Stell dir vor, du möchtest dir die Telefonnummern deiner Freunde merken. In einer Liste müsstest du dir merken, an welcher Position welche Nummer steht – ziemlich unpraktisch. Genau hier kommen Dictionaries ins Spiel: Sie speichern Daten als Paare aus einem Schlüssel (key) und einem Wert (value). Statt über eine Position greifst du über einen sprechenden Namen auf deine Daten zu. In diesem Beitrag lernst du Schritt für Schritt, wie du Dictionaries erstellst, veränderst und sinnvoll einsetzt.
Was ist ein Dictionary?
Ein Dictionary ist eine ungeordnete (seit Python 3.7 einfügereihenfolge-erhaltende) Sammlung von Schlüssel-Wert-Paaren. Du erstellst es mit geschweiften Klammern {}. Jeder Schlüssel muss eindeutig sein und unveränderlich (zum Beispiel ein String oder eine Zahl).
telefonbuch = {
"Anna": "0151-12345",
"Bernd": "0160-98765",
"Clara": "0170-55555"
}
print(telefonbuch["Anna"]) # Ausgabe: 0151-12345Über den Schlüssel "Anna" bekommst du direkt den passenden Wert. Das ist nicht nur lesbarer als ein Index, sondern bei großen Datenmengen auch sehr schnell.
Werte hinzufügen und ändern
Ein Dictionary ist veränderbar. Du kannst jederzeit neue Paare hinzufügen oder bestehende Werte überschreiben. Existiert der Schlüssel bereits, wird der alte Wert ersetzt; existiert er nicht, wird ein neues Paar angelegt.
telefonbuch["David"] = "0152-44444" # neuer Eintrag
telefonbuch["Anna"] = "0151-00000" # bestehenden Wert ändern
print(telefonbuch)
# {'Anna': '0151-00000', 'Bernd': '0160-98765',
# 'Clara': '0170-55555', 'David': '0152-44444'}Einen Eintrag entfernst du mit del oder mit der Methode pop(), die den entfernten Wert zusätzlich zurückgibt:
del telefonbuch["Bernd"]
nummer = telefonbuch.pop("Clara")
print(nummer) # 0170-55555Sicher auf Werte zugreifen mit get()
Wenn du auf einen Schlüssel zugreifst, der nicht existiert, wirft Python einen KeyError. Das kann dein Programm abstürzen lassen. Mit der Methode get() umgehst du das elegant: Sie gibt einen Standardwert zurück, wenn der Schlüssel fehlt.
telefonbuch = {"Anna": "0151-12345"}
# Riskant:
# print(telefonbuch["Emil"]) # KeyError!
# Sicher:
print(telefonbuch.get("Emil")) # None
print(telefonbuch.get("Emil", "unbekannt")) # unbekanntMit get() kannst du Standardwerte definieren und vermeidest unnötige Abstürze. Das ist besonders nützlich, wenn du nicht sicher weißt, ob ein Schlüssel vorhanden ist.
Über Dictionaries iterieren
Sehr oft möchtest du alle Einträge durchgehen. Dafür bieten Dictionaries drei praktische Methoden: keys() liefert alle Schlüssel, values() alle Werte und items() beide als Paare.
lagerbestand = {"Äpfel": 50, "Birnen": 30, "Kirschen": 12}
# Nur die Schlüssel
for produkt in lagerbestand.keys():
print(produkt)
# Schlüssel und Wert zugleich
for produkt, menge in lagerbestand.items():
print(f"{produkt}: {menge} Stück")
# Summe aller Werte
gesamt = sum(lagerbestand.values())
print(f"Gesamtbestand: {gesamt}") # Gesamtbestand: 92Die Schleife über items() ist der Standardweg, wenn du gleichzeitig Schlüssel und Wert brauchst. Achte darauf, dass du zwei Variablen angibst (hier produkt und menge).
Verschachtelte Dictionaries
Werte in einem Dictionary können selbst wieder Dictionaries oder Listen sein. So lassen sich komplexere Strukturen abbilden, etwa eine kleine Benutzerdatenbank:
benutzer = {
"anna99": {
"name": "Anna Müller",
"alter": 28,
"hobbys": ["Lesen", "Klettern"]
},
"bernd_b": {
"name": "Bernd Bauer",
"alter": 34,
"hobbys": ["Kochen"]
}
}
print(benutzer["anna99"]["name"]) # Anna Müller
print(benutzer["anna99"]["hobbys"][0]) # LesenDu greifst Schicht für Schicht zu: erst auf den äußeren Schlüssel, dann auf den inneren. So baust du auch verschachtelte Daten sauber ab.
Fazit
Dictionaries sind das Werkzeug der Wahl, wenn du Daten über sprechende Schlüssel statt über Positionen verwalten willst. Du hast gelernt, wie du sie erstellst, Werte hinzufügst und entfernst, mit get() sicher zugreifst, über items() iterierst und sogar verschachtelte Strukturen aufbaust. In der Praxis begegnen dir Dictionaries überall – von Konfigurationsdaten über JSON-APIs bis zu Zählaufgaben. Mein Tipp: Spiel ein wenig mit eigenen Beispielen herum, etwa einem Wörterbuch oder einem Inventar, und du wirst schnell merken, wie natürlich sich diese Datenstruktur anfühlt.