Python-Dictionary erweitern
-
Verwenden der Methode
update()
zum Erweitern eines Dictionaries in Python - Verwenden des **-Operators zum Erweitern eines Python-Dictionaries
- Verwenden von Dictionaryverständnis zur Erweiterung eines Python-Dictionaries
-
Mit
collections.Chainmap
ein Python-Dictionary erweitern
Dieser Artikel zeigt dem Benutzer, wie man ein Python-Dictionary mit einem anderen Dictionary erweitert. Ein Dictionary ist ein Container mit Daten, die geändert werden können (veränderlich sind), und es speichert diese Daten in Form von Schlüssel-Wert-Paaren, Beispiel {key: ‘value’}.
Sie können ein Dictionary durch Verkettung um ein weiteres Element erweitern. Dies bedeutet, dass alle Schlüssel-Wert-Paare in einem Dictionary dem anderen hinzugefügt werden.
Verwenden der Methode update()
zum Erweitern eines Dictionaries in Python
Die Methode update()
ist eine der Methoden, die Python verwendet, um die Verkettung von Wörterbüchern zu implementieren. Dies geschieht durch Hinzufügen von Schlüssel-Wert-Paar-Elementen eines anderen Dictionaries am Ende des aktuellen Dictionaries.
Diese Methode ist besonders nützlich, wenn Sie ein Dictionary erweitern, das andere Schlüssel-Wert-Paare von einem anderen Dictionary enthält. Andernfalls werden mit update()
die vorhandenen Werte im ersten Dictionary mit den Elementen im zweiten Dictionary überschrieben.
Einfacher ausgedrückt, überschreiben die Werte im zweiten definierten Dictionary die im ersten, da sie sich überschneiden.
first_dict = {"name": "Yolanda", "major": "Bsc Comp Science", "age": 23}
second_dict = {"name": "Beatrice", "major": "Bsc Comp Science", "age": 43}
first_dict.update(second_dict)
print(first_dict)
Ausgabe:
{'name': 'Beatrice', 'major': 'Bsc Comp Science', 'age': 43}
Die obigen Wörterbücher haben identische key
-Werte, die name
sind. Die Verkettung dieser Datenspeicher mit update()
führt dazu, dass der Schlüsselwert name
für das first_dict
durch den von second_dict
überschrieben wird. Daher führt dies zu einem einzigen Dictionary, wie es in der Ausgabe angezeigt wird.
Wenn jedoch ein Dictionary mit Werten erweitert wird, die noch nicht definiert sind, zeigt update() ein einzelnes Dictionary mit allen Schlüssel-Wert-Paaren aus beiden definierten Wörterbüchern an.
Beispiel:
dict_one = {'u':2, 'v':4, 'w':7}
dict_two = {'x':5, 'y':6, 'z': 8}
dict_one.update(dict_two)
print(dict_one)
Ausgabe:
{'u': 2, 'v': 4, 'w': 7, 'x': 5, 'y': 6, 'z': 8}
Verwenden des **-Operators zum Erweitern eines Python-Dictionaries
Die Verwendung des Operators asterik
in einer einzeiligen Anweisung würde so aussehen:
dict(iterable, **kwargs)
iterable
ist das erste definierte Dictionary, und der zweite Parameter ist das zweite Dictionary (Schlüsselwort-Parameter).
Beispiel
y = {"a": 5, "b": 6}
z = {"c": 7, "d": 9}
x = dict(y, **z)
print(x)
Ausgabe:
{'a': 5, 'b': 6, 'c': 7, 'd': 9}
Wenn es in den definierten Wörterbüchern eine Überlappung von Schlüssel-Wert-Paaren gibt, überlappen sich die Elemente des zweiten Dictionaries mit denen des ersten Dictionaries, wie wir es in update()
gesehen haben.
Beispiel:
first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
dictt = dict(first_dict, **second_dict)
print(dictt)
Ausgabe:
{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}
Es ist auch wichtig zu beachten, dass die Argumentnamen und die Schlüssel in den **dictionary
-Elementen vom Datentyp String sein müssen. Andernfalls wird eine Typerror-Ausnahme angezeigt.
Beispiel:
first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, 7: 7}
dictt = dict(first_dict, **second_dict)
print(dictt)
Ausgabe:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: keywords must be strings
Verwenden von Dictionaryverständnis zur Erweiterung eines Python-Dictionaries
Diese Transformationsmethode wandelt ein Python-Dictionary in ein anderes um, indem Elemente in einem ursprünglichen Dictionary bedingt in ein neues aufgenommen werden. Es funktioniert ähnlich wie die Verwendung von Sternchen wie oben.
first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
the_dictionary = {**first_dict, **second_dict}
print(the_dictionary)
Ausgabe:
{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}
Mit collections.Chainmap
ein Python-Dictionary erweitern
Python stellt die ChainMap-Klasse bereit, die mehrere Wörterbücher zusammenfasst, um eine einzelne Ansicht zu bilden, die bei Bedarf aktualisiert werden kann. Wir importieren es aus dem Modul collections
in Python.
Verwenden Sie diese Methode für eine schnellere Verkettung von Elementen. Dies liegt daran, dass
chainmap
nur die Ansichten der Wörterbücher verwendet; daher beinhaltet es kein Kopieren von Daten.
Darüber hinaus überschreibt es Schlüssel an jeder Stelle; Daher könnte man an der Ausgabe erkennen, was die Datenquelle ist.
Implementieren Sie es wie folgt:
from collections import ChainMap
first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
a_dictionary = ChainMap(first_dict, second_dict)