HOWTO · Python

Initialisieren eines Python-Dictionaries

Dieses Tutorial zeigt, wie Sie ein Dictionary in Python initialisieren

Auf dieser Seite

Ein Python-Dictionary speichert Schlüssel-Wert-Paare, sodass ein Programm anhand eines Schlüssels den zugehörigen Wert abrufen kann. Wählen Sie die Initialisierung passend zu Ihren Daten: Schreiben Sie ein Literal für bekannte Paare, verwenden Sie dict() für übergebene Paare oder Schlüsselwortargumente, dict.fromkeys() für Schlüssel mit demselben Wert oder eine Comprehension, um Einträge abzuleiten. Die folgenden Beispiele zeigen, wie sich die einzelnen Formen verhalten.

Ein Dictionary mit Literal-Syntax initialisieren

Verwenden Sie ein Dictionary-Literal, wenn Schlüssel und Werte im Code feststehen. Setzen Sie jeden Schlüssel und Wert in geschweifte Klammern, getrennt durch einen Doppelpunkt; die Paare trennen Sie durch Kommas. Das resultierende Dictionary enthält eindeutige Schlüssel. Wird ein Schlüssel im Literal wiederholt, bleibt der zuletzt zugewiesene Wert erhalten.

Führen Sie dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

dict1 = {"X": 2, "Y": 3, "Z": 4}
print(dict1)

Dadurch werden drei Zeichenfolgenschlüssel ganzzahligen Werten zugeordnet. Für eine kleine, feste Zuordnung ist ein Literal meist die übersichtlichste Wahl.

Ein Dictionary mit dem Konstruktor dict() initialisieren

Der Konstruktor dict() akzeptiert Schlüsselwortargumente oder ein Iterable aus Schlüssel-Wert-Paaren. Die Namen der Schlüsselwortargumente werden zu Zeichenfolgenschlüsseln. Verwenden Sie daher Paare, wenn die Schlüssel keine gültigen Bezeichner oder keine Zeichenfolgen sind. Beispielsweise erzeugt dict(X=1, Y=2) dieselbe Zuordnung wie {"X": 1, "Y": 2}. Um vorhandene Paare umzuwandeln, übergeben Sie sie als Iterable, zum Beispiel dict([("X", 1), ("Y", 2)]).

Der Konstruktor eignet sich, wenn Daten bereits als Paare vorliegen. Wiederholt sich ein Schlüssel in einer Folge von Paaren, bestimmt das spätere Paar den gespeicherten Wert.

dict.fromkeys() für Schlüssel mit einem gemeinsamen Standardwert verwenden

dict.fromkeys() erstellt aus einem Iterable von Schlüsseln ein neues Dictionary und weist jedem Schlüssel denselben übergebenen Wert zu. Wird kein Wert angegeben, verwendet die Methode None, wie in dict.fromkeys(["X", "Y", "Z"]).

Das ist praktisch für unveränderliche Standardwerte wie None, 0 oder eine Zeichenfolge. Bei einem veränderlichen Wert wie einer Liste ist Vorsicht geboten: Alle Schlüssel verweisen auf dasselbe Listenobjekt. Änderungen über einen Schlüssel sind deshalb auch über die anderen sichtbar. Wenn jeder Schlüssel einen eigenen veränderlichen Wert erhalten soll, verwenden Sie stattdessen eine Comprehension wie {key: [] for key in keys}.

Ein Dictionary aus Paaren oder parallelen Iterables erstellen

Wenn Datensätze bereits Schlüssel-Wert-Paare enthalten, übergeben Sie das Iterable direkt an dict(). Eine Tupelliste eignet sich ebenso wie ein anderes Iterable, dessen Elemente jeweils zwei Werte enthalten: dict([("X", 5), ("Y", 6), ("Z", 8)]).

Sind Schlüssel und Werte getrennt gespeichert, ordnen Sie sie mit zip() einander zu und übergeben die Paare an dict(). Zum Beispiel ordnet dict(zip(["X", "Y", "Z"], [5, 6, 8])) jedem Schlüssel den Wert an derselben Position zu. zip() endet, sobald eines der beiden Iterables erschöpft ist; zusätzliche Elemente des längeren Iterables werden nicht berücksichtigt. Wiederholt sich ein Schlüssel in einem erzeugten Paar, gewinnt der letzte Wert.

Ein Dictionary mit einer Comprehension erstellen

Eine Dictionary-Comprehension leitet Einträge in einem einzigen Ausdruck aus einem Iterable ab. Ihre allgemeine Form lautet {key_expression: value_expression for item in iterable}. Beispielsweise weist {name: 0 for name in ["Ada", "Lin"]} jedem Namen den Anfangswert null zu.

Verwenden Sie eine Comprehension, wenn Schlüssel oder Werte aus Eingabedaten berechnet werden oder jeder Schlüssel einen eigenen, neu erstellten veränderlichen Wert benötigt. Sie entspricht dem Erstellen eines leeren Dictionarys und dem Zuweisen eines Werts für jedes Element in einer Schleife. Halten Sie den Ausdruck übersichtlich; bei einer Umwandlung in mehreren Schritten ist eine gewöhnliche Schleife leichter zu lesen.

Mit setdefault() einem fehlenden Schlüssel einen Standardwert hinzufügen

setdefault() arbeitet mit einem vorhandenen Dictionary. Ist der Schlüssel vorhanden, gibt die Methode den aktuellen Wert zurück. Andernfalls fügt sie den Schlüssel mit dem übergebenen Standardwert ein und gibt diesen Wert zurück. Beispielsweise initialisiert counts.setdefault("apples", 0) einen fehlenden Zähler, ohne einen vorhandenen Zählwert zu verändern.

Diese Methode ist nützlich, wenn ein Dictionary bereits existiert und ein bestimmter Schlüssel gegebenenfalls initialisiert werden muss. Sie dient nicht dazu, eine vollständige Zuordnung zu erstellen. Beim wiederholten Gruppieren von Werten ist setdefault(key, []) mit Bedacht einzusetzen: Für den Aufruf wird eine neue Liste erstellt; bei späteren Aufrufen für einen vorhandenen Schlüssel gibt die Methode dessen aktuelle Liste zurück. Direkte Aufrufe von __setitem__() sind eine niedrigstufige Alternative. Eine gewöhnliche Zuweisung wie mapping[key] = value ist klarer, wenn ein einzelner Eintrag gesetzt werden soll.

Das passende Muster zur Dictionary-Initialisierung wählen

Verwenden Sie ein Literal für eine kleine Zuordnung, deren Paare im Voraus bekannt sind. Wählen Sie dict() für Schlüsselwortargumente oder vorhandene Paardaten und ordnen Sie parallele Iterables mit zip() einander zu, wenn die Positionen zusammengehören. Verwenden Sie dict.fromkeys(), wenn alle Schlüssel auf denselben Standardwert verweisen sollen, insbesondere auf einen unveränderlichen Wert. Wählen Sie eine Comprehension für berechnete Einträge oder separate Werte je Schlüssel. Mit setdefault() fügen Sie einem Schlüssel in einem bereits vorhandenen Dictionary einen Standardwert hinzu.