Skip to content

Mengenoperationen auf mehrere Wörterbuchschlüssel in Python

Python

In Python können die Methoden keys() und items() der Wörterbücher dict used Werden, um Set-Operationen an Schlüsseln und Schlüssel-Wert-Paaren auszuführen. Zum Beispiel can SIE ein Wörterbuch generieren, das aus Elementen (Schlüsseln und Werten) besteht, sterben mehrere Wörterbüchern gemeinsam sind.

Dieser Artikel hat folgenden Inhalt.

  • Die Methoden keys() und items() von dict
  • Extrahieren Sie Schlüssel, die mehrere Wörterbücher gemeinsam sind: Schnittmenge &
  • Extrahieren Sie alle Schlüssel aus mehreren Wörterbüchern: Union |
  • Extrahieren Sie Schlüssel, die nur in einem von mehreren Wörterbüchern enthalten sind: Symmetrische Differenz ^

Verwenden Sie die folgenden zwei Wörterbücher als Beispiele.

d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'b': 2, 'c': 4, 'd': 5}

Die Methoden keys() und items() von dict

Das Dictionary hat die Methoden keys() und items().

keys() gibt die Ansicht von Schlüsseln zurück, items() gibt die Ansicht von Schlüssel-Wert-Tupeln (Schlüssel, Wert) zurück.

print(list(d1.keys()))
# ['a', 'b', 'c']

print(type(d1.keys()))
# <class 'dict_keys'>

print(list(d1.items()))
# [('a', 1), ('b', 2), ('c', 3)]

print(type(d1.items()))
# <class 'dict_items'>

Sie sind dict_keys bzw. dict_items und unterstützen Set-Operationen wie set.

Das Wörterbuch verfügt auch über eine Wertemethode, die eine Ansicht von Werten zurückgibt, aber Set-Operationen werden nicht unterstützt, da sich Werte überschneiden can.

Im Folgenden werden Beispiele für Set-Operationen mit den Methoden keys() und items() gezeigt.

Schlüssel, die mehrere Wörterbücher gemeinsam sind, können mit der Methode keys() und dem Operator & extrahiert werden.

intersection_keys = d1.keys() & d2.keys()
print(intersection_keys)
# {'c', 'b'}

Das Ergebnis einer Set-Operation ist vom Typ set. Gleiches gilt für die folgenden Beispiele.

print(type(intersection_keys))
# <class 'set'>

Im Fall von items() Werden Elemente mit gemeinsamen Schlüsseln und Werten gesichert. Artikel, die nur den Schlüssel oder nur den Wert gemeinsam haben, sind ausgeschlossen.

intersection_items = d1.items() & d2.items()
print(intersection_items)
# {('b', 2)}

Sie können ein neues Wörterbuch erzeugen, indem Sie eine Menge von (Schlüssel-, Wert-) Tupeln (= das Ergebnis der Set-Operation von items()) an dict() übergeben.

intersection_dict = dict(d1.items() & d2.items())
print(intersection_dict)
# {'b': 2}

print(type(intersection_dict))
# <class 'dict'>

Alle Schlüssel in mehreren Wörterbüchern, dh Schlüssel, sterben in mindestens einem der mehreren Wörterbücher enthalten sind, can mit | extrahiert werden Operator.

union_keys = d1.keys() | d2.keys()
print(union_keys)
# {'d', 'a', 'b', 'c'}

Bei items() werden Elemente mit Schlüsseln, aber unterschiedlichen Werten getrennt extrahiert.

union_items = d1.items() | d2.items()
print(union_items)
# {('d', 5), ('c', 4), ('a', 1), ('b', 2), ('c', 3)}

Wenn wie in Beispiel diesem Elemente mit einem gemeinsamen Schlüssel, aber unterschiedlichen Werten vorhanden sind, WIRD nur eines davon beibehalten, WENN ein Wörterbuch aus der Menge generiert wird. Es kann nicht festgelegt Werden, welcher Wert beibehalten werden soll.

union_dict = dict(d1.items() | d2.items())
print(union_dict)
# {'d': 5, 'c': 3, 'a': 1, 'b': 2}

Schlüssel, die nur in einem der mehreren Wörterbücher enthalten sind, können mit dem ^-Operator extrahiert werden.

symmetric_difference_keys = d1.keys() ^ d2.keys()
print(symmetric_difference_keys)
# {'d', 'a'}

Im Fall von items() wie bei | -Operator werden Elemente mit Schlüsseln, aber unterschiedlichen Werten separat extrahiert.

symmetric_difference_items = d1.items() ^ d2.items()
print(symmetric_difference_items)
# {('d', 5), ('c', 4), ('a', 1), ('c', 3)}

Wenn wie in Beispiel diesem Elemente mit einem gemeinsamen Schlüssel, aber unterschiedlichen Werten vorhanden sind, WIRD nur eines davon beibehalten, WENN ein Wörterbuch aus der Menge generiert wird. Es kann nicht festgelegt Werden, welcher Wert beibehalten werden soll.

symmetric_difference_dict = dict(d1.items() ^ d2.items())
print(symmetric_difference_dict)
# {'d': 5, 'c': 3, 'a': 1}

Sie können auch den –Operator verwenden, um die Satzdifferenz zu erhalten.

difference_keys = d1.keys() - d2.keys()
print(difference_keys)
# {'a'}

difference_items = d1.items() - d2.items()
print(difference_items)
# {('c', 3), ('a', 1)}

difference_dict = dict(d1.items() - d2.items())
print(difference_dict)
# {'c': 3, 'a': 1}