Hinzufügen von Elementen zu einem Wörterbuch und Verbinden von Wörterbüchern in Python

Geschäft

In diesem Abschnitt wird erklärt, wie Sie in Python neue Elemente zu einem Dictionary (Objekt vom Typ dict) hinzufügen oder den Wert eines vorhandenen Elements aktualisieren können. Es ist auch möglich, mehrere Dictionaries zu verknüpfen (join, merge).

  • Hinzufügen und Aktualisieren von Elementen zum Wörterbuch durch Angabe von Schlüsseln.
  • Verkettung (Zusammenführung) mehrerer Dictionaries:update(),| operator,|= operator
  • Mehrere Elemente hinzufügen oder aktualisieren:update(),|= Operator

Hinzufügen und Aktualisieren von Elementen zum Wörterbuch durch Angabe von Schlüsseln.

Sie können Wörterbuchelemente auf folgende Weise hinzufügen.

Dictionary-Objekt [Schlüssel] = Wert

Wenn ein nicht vorhandener Schlüssel angegeben wird, wird ein neues Element hinzugefügt, und wenn ein vorhandener Schlüssel angegeben wird, wird der vorhandene Wert aktualisiert (überschrieben).

d = {'k1': 1, 'k2': 2}

d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}

Wenn Sie den Wert eines vorhandenen Schlüssels nicht aktualisieren möchten, verwenden Sie die Methode setdefault().

Konkatenieren (Zusammenführen) mehrerer Dictionaries: update(), |-Operator, |=-Operator

aktualisieren()

Wenn ein anderes Dictionary-Objekt als Argument für die Methode update() des Dictionary-Objekts angegeben wird, werden alle seine Elemente hinzugefügt.

Wenn sich der Schlüssel mit einem vorhandenen Schlüssel überschneidet, wird er mit dem Wert des im Argument angegebenen Wörterbuchs überschrieben.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Es ist ein Fehler, mehrere Dictionaries im Argument update() anzugeben.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2

Wie später erklärt, kann update() neue Elemente als Schlüsselwortargumente (Schlüssel=Wert) hinzufügen, also fügen Sie einfach ** zum Wörterbuch hinzu und erweitern jedes Element als Schlüsselwortargument und übergeben es.

d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

Wie in den vorherigen Beispielen wird durch die Verwendung von update() das ursprüngliche Wörterbuchobjekt aktualisiert.

Wenn Sie ein neues Wörterbuch durch Zusammenführen mehrerer Wörterbücher erzeugen möchten, verwenden Sie {**d1, **d2} (ab Python 3.5) oder dict(**d1, **d2).

Ab Python 3.9 ist es auch möglich, ein neues Wörterbuch mit dem nachfolgend beschriebenen| Operator zu erstellen.

|-Operator, |=-Operator (Python 3.9 und höher)

Seit Python 3.9 ist es möglich, zwei Dictionaries mit dem Operator | zu verschmelzen. Wenn zwei Dictionaries den gleichen Schlüssel haben, hat der rechte Wert Vorrang.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}

|Es ist auch möglich, mehrere Wörterbücher zu kombinieren, indem Sie eine Reihe von Operatoren verwenden.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

+Wie bei update() wird das Objekt auf der linken Seite aktualisiert.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Mehrere Elemente hinzufügen oder aktualisieren: update(), |=-Operator

aktualisieren()

Wenn das Schlüsselwortargument key=value in der update()-Methode angegeben wird, wird der Schlüssel key und der Wert value hinzugefügt. Wenn sich der Schlüssel mit einem vorhandenen Schlüssel überschneidet, wird dieser mit dem im Argument angegebenen Wert überschrieben.

d = {'k1': 1, 'k2': 2}

d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Es ist auch möglich, eine Liste von (Schlüssel, Wert) als Argument für die Methode update() anzugeben. Wenn sich der Schlüssel mit einem vorhandenen Schlüssel überschneidet, wird dieser mit dem als Argument angegebenen Wert überschrieben.

d = {'k1': 1, 'k2': 2}

d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

In Kombination mit der Funktion zip() können Elemente aus einer Liste von Schlüsseln und einer Liste von Werten hinzugefügt werden.

d = {'k1': 1, 'k2': 2}

keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]

d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

|= Operator (Python 3.9 und höher)

Mit dem Operator |= kann auf der rechten Seite eine Liste von (Schlüssel, Wert) angegeben werden.

d = {'k1': 1, 'k2': 2}

d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Beachten Sie, dass die Angabe einer Liste mit dem Operator | zu einem Fehler führt. Es werden nur Wörterbuch-zu-Wörterbuch-Operationen unterstützt.

# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'