Die Python-Funktion dict() ist der Konstruktor des eingebauten Datentyps dict — einer veränderbaren, geordneten Hash-Map aus Schlüssel-Wert-Paaren. Mit dict() lassen sich Dictionaries auf vier Wegen erzeugen: leer, aus Keyword-Argumenten, aus einem anderen Mapping oder aus einer Iterable von Paaren. Seit Python 3.7 garantiert dict die Einfügereihenfolge der Schlüssel.
Einleitung
Ein Dictionary in Python ist eine Datenstruktur zur Zuordnung von eindeutigen Schlüsseln (Keys) zu Werten (Values). Schlüssel müssen hashable sein (typisch: Strings, Zahlen, Tupel), Werte können beliebig sein. Dictionaries werden überall im Python-Alltag eingesetzt — von Konfigurationen über JSON-Daten bis zu Caches.
dict() ist die Funktions-Form des Konstruktors. Alternativ schreibt man Dictionaries direkt mit der Literal-Syntax {}, die schneller ist, aber weniger Konstruktionswege erlaubt.
Syntax
dict() # leeres Dictionary
dict(mapping) # aus anderem Mapping kopieren
dict(iterable) # aus Iterable von (key, value)-Paaren
dict(**kwargs) # aus Keyword-Argumenten
dict(mapping, **kwargs) # Kombiniertmapping Ein anderes Dictionary oder Mapping-Objekt, dessen Inhalte kopiert werden.
iterable Eine Iterable von Paaren (key, value) — z. B. eine Liste von Tupeln oder das Ergebnis von zip().
**kwargs Beliebige Keyword-Argumente, die als Schlüssel-Wert-Paare übernommen werden. Schlüssel müssen gültige Python-Bezeichner sein.
Rückgabewert
Ein neues dict-Objekt mit den übergebenen Schlüssel-Wert-Paaren. Bei doppelten Schlüsseln gewinnt der zuletzt übergebene Wert.
Beispiele
Leeres Dictionary
d = dict()
print(d, type(d)){} <class 'dict'>Aus Keyword-Argumenten
person = dict(name="Michael", alter=34, stadt="Berlin")
print(person){'name': 'Michael', 'alter': 34, 'stadt': 'Berlin'}Aus einer Iterable von Paaren
pairs = [("a", 1), ("b", 2), ("c", 3)]
d = dict(pairs)
print(d){'a': 1, 'b': 2, 'c': 3}Aus zip()
keys = ["name", "alter", "stadt"]
values = ["Michael", 34, "Berlin"]
d = dict(zip(keys, values))
print(d){'name': 'Michael', 'alter': 34, 'stadt': 'Berlin'}Mapping kopieren
original = {"a": 1, "b": 2}
copy = dict(original)
copy["c"] = 3
print(original)
print(copy){'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 3}Praktische Beispiele
Zwei Dictionaries mergen
defaults = {"theme": "dark", "lang": "de", "fontsize": 14}
overrides = {"theme": "light", "fontsize": 16}
# Klassisch via dict()
merged = dict(defaults, **overrides)
print(merged)
# Modern (Python 3.9+) via | Operator
merged = defaults | overrides
print(merged){'theme': 'light', 'lang': 'de', 'fontsize': 16}
{'theme': 'light', 'lang': 'de', 'fontsize': 16}Liste in Lookup-Map umwandeln
users = [
{"id": 1, "name": "Michael"},
{"id": 2, "name": "Anna"},
{"id": 3, "name": "Tobias"},
]
by_id = {u["id"]: u for u in users}
print(by_id[2]){'id': 2, 'name': 'Anna'}Initialisierung mit Default-Wert
# Alle Keys auf den gleichen Startwert setzen
colors = ["rot", "grün", "blau"]
counter = dict.fromkeys(colors, 0)
print(counter)
counter["rot"] += 1
counter["blau"] += 2
print(counter){'rot': 0, 'grün': 0, 'blau': 0}
{'rot': 1, 'grün': 0, 'blau': 2}Praktische Hinweise
- Literal-Syntax
{}ist schneller alsdict()und sollte bevorzugt werden, wenn die Schlüssel zur Schreibzeit feststehen. - Schlüssel-Reihenfolge: Seit Python 3.7 garantiert die Spezifikation die Einfügereihenfolge.
- Dict-Comprehensions wie
{k: v for k, v in items}sind oft die idiomatische Wahl gegenüberdict()mit Generator. - Doppelte Schlüssel führen zu keinem Fehler — der letzte Wert gewinnt (nützlich beim Mergen).
- Für sortierte Dictionaries siehe
collections.OrderedDict, für Defaults siehecollections.defaultdict.