Sets in Python zusammenführen
Alle Möglichkeiten, Python-Sets zu verbinden: union(), update(), die Operatoren | und |=, sowie In-place-Methoden für Schnittmenge, Differenz und symmetrische Differenz.
Python bietet mehrere Möglichkeiten, zwei oder mehr Sets zu einer einzigen Sammlung zu kombinieren. Diese Seite erklärt alle davon — die Methode union(), die Methode update(), ihre Operatorkurzbefehle (| und |=), das Zusammenführen von mehr als zwei Sets auf einmal sowie die verwandten In-place-Methoden für Schnittmenge, Differenz und symmetrische Differenz.
Schnellübersicht
| Ziel | Methode | Operator | Verändert das Original? |
|---|---|---|---|
| Neues Set mit allen Elementen | union() | | | Nein — gibt neues Set zurück |
| Alle Elemente direkt hinzufügen | update() | |= | Ja |
| Neues Set — nur gemeinsame Elemente | intersection() | & | Nein |
| Nur gemeinsame Elemente behalten | intersection_update() | &= | Ja |
| Neues Set — Elemente nicht im anderen Set | difference() | - | Nein |
| Im anderen Set enthaltene Elemente entfernen | difference_update() | -= | Ja |
| Neues Set — Elemente in genau einem Set | symmetric_difference() | ^ | Nein |
| Elemente behalten, die in genau einem Set vorkommen | symmetric_difference_update() | ^= | Ja |
Sets mit union() zusammenführen
union() gibt ein neues Set zurück, das jedes eindeutige Element aus allen übergebenen Sets enthält. Die ursprünglichen Sets werden nicht verändert.
Zwei Sets in Python vereinigen
Ausgabe (Reihenfolge kann variieren — Sets sind ungeordnet):
{'apple', 'banana', 'cherry', 'mango', 'orange'}Da set2 "banana" bereits enthält, erscheint es im Ergebnis nur einmal. Das ist die grundlegende Eigenschaft eines Sets: keine Duplikate.
Der |-Operator
Der Pipe-Operator | ist das operatoräquivalent zu union(). Er liefert dasselbe Ergebnis und ist in Ausdrücken oft besser lesbar.
set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}
set3 = set1 | set2
print(set3)Ausgabe:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Wann | vs. union() verwenden: Nutzen Sie | für einen schnellen, lesbaren Ausdruck zwischen zwei Sets. Verwenden Sie union(), wenn Sie direkt ein anderes Iterable (z. B. eine Liste oder ein Tupel) übergeben möchten — union() akzeptiert jedes Iterable, während | erfordert, dass beide Operanden Sets sind.
# union() accepts any iterable
set1 = {1, 2, 3}
result = set1.union([4, 5], (6,)) # list and tuple both work
print(result)Ausgabe:
{1, 2, 3, 4, 5, 6}Sets mit update() zusammenführen
update() fügt alle Elemente aus einem oder mehreren anderen Sets (oder beliebigen Iterables) in das bestehende Set ein. Es verändert das ursprüngliche Set direkt und gibt None zurück.
Ein Set in Python mit einem anderen aktualisieren
Ausgabe:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Nach diesem Aufruf enthält set1 alle eindeutigen Elemente aus set2. set2 selbst bleibt unverändert.
Der |=-Operator
|= ist das In-place-Äquivalent von update().
set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}
set1 |= set2
print(set1)Ausgabe:
{'apple', 'banana', 'cherry', 'mango', 'orange'}Mehr als zwei Sets auf einmal zusammenführen
Sowohl union() als auch update() akzeptieren mehrere Argumente, sodass Sie viele Sets in einem einzigen Aufruf kombinieren können.
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}
result = A.union(B, C)
print(result)Ausgabe:
{1, 2, 3, 4, 5, 6, 7}Dasselbe gilt für update():
A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}
A.update(B, C)
print(A)Ausgabe:
{1, 2, 3, 4, 5, 6, 7}Sie können den |-Operator auch über mehrere Sets hinweg verketten:
result = {1, 2} | {3, 4} | {5, 6}
print(result)Ausgabe:
{1, 2, 3, 4, 5, 6}Verwandte In-place-Zusammenführungsmethoden
Das gleiche Muster — In-place vs. neues Set — gilt auch für alle anderen Set-Operationen. Diese Methoden sollte man neben update() kennen.
intersection_update() und &=
Behält nur die Elemente, die in allen angegebenen Sets vorkommen.
A = {1, 2, 3, 4}
B = {2, 3, 5}
A.intersection_update(B)
print(A) # only elements in both A and BAusgabe:
{2, 3}difference_update() und -=
Entfernt jedes Element, das auch im anderen Set vorkommt.
A = {1, 2, 3, 4}
B = {2, 4}
A.difference_update(B)
print(A) # elements in A that are not in BAusgabe:
{1, 3}symmetric_difference_update() und ^=
Behält nur die Elemente, die in genau einem der beiden Sets vorkommen — Elemente, die in beiden enthalten sind, werden verworfen.
A = {1, 2, 3}
B = {2, 3, 4}
A.symmetric_difference_update(B)
print(A) # elements in A or B, but not in bothAusgabe:
{1, 4}union() vs. update() — Was sollte man verwenden?
Verwenden Sie union() (oder |), wenn Sie die ursprünglichen Sets unverändert lassen und mit dem kombinierten Ergebnis als separatem Wert arbeiten möchten. Es ist die richtige Wahl in Ausdrücken, Funktionsrückgabewerten und überall dort, wo Unveränderlichkeit eine Rolle spielt.
Verwenden Sie update() (oder |=), wenn Sie ein Set schrittweise aufbauen und das Original nicht erhalten müssen. Es verbraucht etwas weniger Speicher, da kein zusätzliches Objekt erstellt wird.
# Reading pattern: create a single combined set from several sources
all_tags = set()
for article in articles:
all_tags.update(article["tags"]) # update() is natural hereVerwandte Themen
- Python Sets — was Sets sind, wie man sie erstellt und ihre wesentlichen Eigenschaften
- Set-Elemente hinzufügen — einzelne und mehrere Elemente zu einem Set hinzufügen
- Set-Elemente entfernen —
remove(),discard()undpop() - Auf Set-Elemente zugreifen — Mitgliedschaftstests und Iteration
- Sets durchlaufen — Set-Elemente mit
foriterieren - Set-Methoden — vollständige Referenz aller eingebauten Set-Methoden