Elemente zu einem Python-Dictionary hinzufügen
Vier Methoden zum Hinzufügen von Einträgen in Python-Dictionaries: Eckige Klammern, update(), setdefault() und der Merge-Operator ab Python 3.9.
Python-Dictionaries sind veränderliche, geordnete (seit Python 3.7) Sammlungen von Schlüssel-Wert-Paaren. Da sie veränderlich sind, können nach der Erstellung jederzeit neue Einträge hinzugefügt werden. Dieses Kapitel behandelt alle gängigen Techniken zum Hinzufügen von Elementen zu einem Dictionary, einschließlich der Merge-Operatoren ab Python 3.9, mit praktischen Hinweisen darauf, wann welche Methode am besten geeignet ist.
Was ist ein Python-Dictionary?
Ein Dictionary speichert Daten als Schlüssel-Wert-Paare innerhalb von geschweiften Klammern {}. Schlüssel müssen eindeutig und unveränderlich sein (Strings, Zahlen oder Tupel); Werte können beliebige Python-Objekte sein.
# A simple dictionary
person = {'name': 'Alice', 'age': 30, 'city': 'New York'}Schlüssel sind eindeutig — wenn einem bereits vorhandenen Schlüssel ein Wert zugewiesen wird, wird der alte Wert überschrieben, nicht dupliziert. Beachten Sie dieses Verhalten beim Durcharbeiten der folgenden Methoden.
Möglichkeiten zum Hinzufügen von Elementen zu einem Dictionary
Verwendung von eckigen Klammern
Die einfachste Möglichkeit, ein neues Schlüssel-Wert-Paar hinzuzufügen, ist die direkte Zuweisung mit eckigen Klammern:
Ausgabe:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Wenn der Schlüssel bereits vorhanden ist, wird der Wert ersetzt und nicht neu hinzugefügt:
my_dict = {'name': 'John', 'age': 25}
my_dict['age'] = 30 # overwrites 25
print(my_dict)
# {'name': 'John', 'age': 30}Verwenden Sie die Zuweisung mit eckigen Klammern, wenn Sie einen einzelnen Schlüssel hinzufügen oder aktualisieren möchten, dessen Name zum Schreibzeitpunkt bekannt ist.
Verwendung der Methode update()
dict.update() fügt ein oder mehrere Schlüssel-Wert-Paare in einem einzigen Aufruf in das Dictionary ein. Sie können ein weiteres Dictionary, ein iterierbares Objekt mit (key, value)-Paaren oder Schlüsselwortargumente übergeben.
Ein zweites Dictionary zusammenführen:
Ausgabe:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male', 'occupation': 'Software Engineer'}Mehrere Schlüssel gleichzeitig mit Schlüsselwortargumenten hinzufügen:
my_dict = {'name': 'John', 'age': 25}
my_dict.update(city='New York', gender='Male')
print(my_dict)
# {'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Wie die Zuweisung mit eckigen Klammern überschreibt update() vorhandene Schlüssel. Verwenden Sie diese Methode, wenn Sie mehrere Einträge auf einmal hinzufügen oder aktualisieren möchten.
Verwendung der Methode setdefault()
dict.setdefault(key, default) fügt einen Schlüssel nur dann hinzu, wenn er noch nicht vorhanden ist. Wenn der Schlüssel existiert, gibt die Methode den vorhandenen Wert zurück, ohne etwas zu ändern.
Ausgabe:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Wenn der Schlüssel bereits vorhanden ist, lässt setdefault() ihn unverändert und gibt den aktuellen Wert zurück:
my_dict = {'name': 'John', 'age': 25}
result = my_dict.setdefault('name', 'Alice')
print(result) # John — not overwritten
print(my_dict) # {'name': 'John', 'age': 25}setdefault() ist das richtige Werkzeug, wenn Sie einen Schlüssel mit einem Standardwert initialisieren möchten, ohne versehentlich bereits vorhandene Daten zu überschreiben. Ein gängiges Muster ist das Initialisieren eines fehlenden Schlüssels mit einer leeren Liste, bevor Elemente daran angehängt werden:
groups = {}
for item in ['apple', 'banana', 'avocado']:
letter = item[0]
groups.setdefault(letter, []).append(item)
print(groups)
# {'a': ['apple', 'avocado'], 'b': ['banana']}Verwendung der Merge-Operatoren (Python 3.9+)
Python 3.9 hat zwei Operatoren eingeführt, die eine prägnante Syntax zum Kombinieren von Dictionaries bieten.
| — ein neues zusammengeführtes Dictionary erstellen (nicht destruktiv):
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d3 = d1 | d2 # d1 and d2 are unchanged
print(d3)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}|= — an Ort und Stelle aktualisieren (entspricht update(), aber kürzer):
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1 |= d2 # d1 is modified
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}Bei überlappenden Schlüsseln gewinnt der rechte Operand — gleiche Priorität wie bei update(). Diese Operatoren erfordern Python 3.9 oder höher; verwenden Sie update() für eine breitere Kompatibilität.
Verwendung von dict.fromkeys() zum Vorbelegen eines Dictionarys
dict.fromkeys(keys, default) ist eine Klassenmethode, die ein brandneues Dictionary aus einem iterierbaren Objekt mit Schlüsseln und einem optionalen Standardwert erstellt. Sie fügt einem vorhandenen Dictionary keine Elemente hinzu.
# Create a dictionary with a shared default value
template = dict.fromkeys(['name', 'age', 'city'], 'Unknown')
print(template)
# {'name': 'Unknown', 'age': 'Unknown', 'city': 'Unknown'}
# You can then populate it with real values
template['name'] = 'Alice'
template['age'] = 28
print(template)
# {'name': 'Alice', 'age': 28, 'city': 'Unknown'}fromkeys() ist nützlich, um ein Dictionary vorzubereiten, wenn die Schlüssel im Voraus bekannt sind, die Werte aber erst später eingetragen werden.
Die richtige Methode wählen
| Ziel | Methode |
|---|---|
| Einen einzelnen Schlüssel hinzufügen oder überschreiben | dict[key] = value |
| Mehrere Schlüssel hinzufügen oder überschreiben | dict.update(...) oder dict |= other (3.9+) |
| Einen Schlüssel nur hinzufügen, wenn er fehlt | dict.setdefault(key, default) |
| Zwei Dictionaries zu einem dritten zusammenführen | new = a | b (3.9+) |
| Ein neues Dictionary aus einer Schlüsselliste erstellen | dict.fromkeys(keys, default) |
Verwandte Kapitel
- Python Dictionaries — Übersicht über das Erstellen und die Syntax von Dictionaries
- Access Items — Werte per Schlüssel lesen,
get()und Iteration - Change Items — vorhandene Werte sicher aktualisieren
- Remove Items —
pop(),popitem(),delundclear() - Dictionary Methods — vollständige Referenz aller eingebauten Dictionary-Methoden
- Loop Dictionaries — über Schlüssel, Werte und Elemente iterieren