W3docs

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

ZielMethodeOperatorVerändert das Original?
Neues Set mit allen Elementenunion()|Nein — gibt neues Set zurück
Alle Elemente direkt hinzufügenupdate()|=Ja
Neues Set — nur gemeinsame Elementeintersection()&Nein
Nur gemeinsame Elemente behaltenintersection_update()&=Ja
Neues Set — Elemente nicht im anderen Setdifference()-Nein
Im anderen Set enthaltene Elemente entfernendifference_update()-=Ja
Neues Set — Elemente in genau einem Setsymmetric_difference()^Nein
Elemente behalten, die in genau einem Set vorkommensymmetric_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

python— editable, runs on the server

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

python— editable, runs on the server

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 B

Ausgabe:

{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 B

Ausgabe:

{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 both

Ausgabe:

{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 here

Verwandte Themen

Übungen

Übung
Which of the following statements about joining sets in Python are correct?
Which of the following statements about joining sets in Python are correct?
Was this page helpful?