Dictionaries#

Pythons eingebauter Dictionary-Datentyp bietet assoziative Array-Funktionalität, die mit Hilfe von Hash-Tabellen implementiert wird. Die eingebaute Funktion len gibt die Anzahl der Schlüssel-Wert-Paare in einem Wörterbuch zurück. Die del-Anweisung kann zum Löschen eines Schlüssel-Wert-Paares verwendet werden. Wie bei Listen sind mehrere Dictionary-Methoden (clear, copy, get, items, keys, update und values) verfügbar.

>>> x = {1: "eins", 2: "zwei"}
>>> x[3] = "drei"
>>> x["viertes"] = "vier"
>>> list(x.keys())
[1, 2, 3, 'viertes']
>>> x[1]
'eins'
>>> x.get(1, "nicht vorhanden")
'eins'
>>> x.get(5, "nicht vorhanden")
'nicht vorhanden'

Schlüssel müssen vom unveränderlichen Typ sein, einschließlich Zahlen, Zeichenketten und Tupel.

Warnung

Auch wenn ihr in einem Dictionary verschiedene Schlüsseltypen verwenden könnt, solltet ihr das vermeiden, da dadurch nicht nur die Lesbarkeit sondern auch die Sortierung erschwert wird.

Werte können alle Arten von Objekten sein, einschließlich veränderlicher Typen wie Listen und Dictionaries. Wenn ihr versucht, auf den Wert eines Schlüssels zuzugreifen, der nicht im Dictionary enthalten ist, wird eine KeyError-Exception ausgelöst. Um diesen Fehler zu vermeiden, gibt die Dictionary-Methode get optional einen benutzerdefinierten Wert zurück, wenn ein Schlüssel nicht in einem Wörterbuch enthalten ist.

setdefault#

setdefault kann verwendet werden, um Zähler für die Schlüssel eines Dicts bereitzustellen, z.B.:

>>> titles = ["Data types", "Lists", "Sets", "Lists"]
>>> for title in titles:
...     titles_count.setdefault(title, 0)
...     titles_count[title] += 1
...
>>> titles_count
{'Data types': 1, 'Lists': 2, 'Sets': 1}

Bemerkung

Solche Zähloperationen verbreiteten sich schnell, sodass später die Klasse collections.Counter zur Python-Standardbibliothek hinzugefügt wurde. Diese Klasse kann die oben genannten Operationen viel einfacher durchführen:

>>> collections.Counter(titles)
Counter({'Lists': 2, 'Data types': 1, 'Sets': 1})

Dictionaries zusammenführen#

Ihr könnt zwei Dictionaries zu einem einzigen Dictionary zusammenfügen mit der dict.update()-Methode:

>>> titles = {7.0: "Data Types", 7.1: "Lists", 7.2: "Tuples"}
>>> new_titles = {7.0: "Data types", 7.3: "Sets"}
>>> titles.update(new_titles)
>>> titles
{7.0: 'Data types', 7.1: 'Lists', 7.2: 'Tuples', 7.3: 'Sets'}

Bemerkung

Die Reihenfolge der Operanden ist wichtig, da 7.0 dupliziert wird und der Wert des letzten Schlüssel den vorhergehenden überschreibt.

Erweiterungen#

python-benedict

dict-Unterklasse mit Keylist/Keypath/Keyattr-Unterstützung sowie I/O-Shortcuts.

pandas

kann Dicts in Series und DataFrames überführen.