W3docs

Unir Sets en Python

Aprende todas las formas de unir sets en Python: union(), update(), los operadores | y |=, y los métodos en lugar para intersección, diferencia y diferencia simétrica.

Python ofrece varias formas de combinar dos o más sets en una sola colección. Esta página cubre todas ellas: el método union(), el método update(), sus atajos de operador (| y |=), la unión de más de dos sets a la vez, y los métodos relacionados en lugar para intersección, diferencia y diferencia simétrica.

Comparación Rápida

ObjetivoMétodoOperador¿Modifica el original?
Nuevo set con todos los elementosunion()|No — devuelve un nuevo set
Agregar todos los elementos en lugarupdate()|=
Nuevo set — solo elementos comunesintersection()&No
Conservar solo elementos comunesintersection_update()&=
Nuevo set — elementos no presentes en el otrodifference()-No
Eliminar elementos presentes en el otrodifference_update()-=
Nuevo set — elementos en uno pero no en ambossymmetric_difference()^No
Conservar elementos en uno pero no en ambossymmetric_difference_update()^=

Unir Sets con union()

union() devuelve un nuevo set que contiene todos los elementos únicos de todos los sets pasados como argumento. Los sets originales no se modifican.

Unir dos sets en Python

python— editable, runs on the server

Salida (el orden puede variar — los sets no tienen orden):

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Como set2 ya contiene "banana", el resultado solo lo incluye una vez. Esa es la propiedad definitoria de un set: no hay duplicados.

El Operador |

El pipe | es el equivalente en operador de union(). Produce el mismo resultado y suele ser más legible en expresiones.

set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}

set3 = set1 | set2
print(set3)

Salida:

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Cuándo usar | vs union(): usa | para una expresión rápida y legible entre dos sets. Usa union() cuando necesites pasar cualquier otro iterable (como una lista o una tupla) directamente — union() acepta cualquier iterable, mientras que | requiere que ambos operandos sean sets.

# union() accepts any iterable
set1 = {1, 2, 3}
result = set1.union([4, 5], (6,))   # list and tuple both work
print(result)

Salida:

{1, 2, 3, 4, 5, 6}

Unir Sets con update()

update() agrega todos los elementos de uno o más sets (o cualquier iterable) al set existente. Modifica el set original en lugar y devuelve None.

Actualizar un set con otro set en Python

python— editable, runs on the server

Salida:

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Después de esta llamada, set1 ha crecido para incluir todos los elementos únicos de set2. set2 en sí no se modifica.

El Operador |=

|= es el equivalente en lugar de update().

set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}

set1 |= set2
print(set1)

Salida:

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Unir Más de Dos Sets a la Vez

Tanto union() como update() aceptan múltiples argumentos, por lo que puedes combinar muchos sets en una sola llamada.

A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}

result = A.union(B, C)
print(result)

Salida:

{1, 2, 3, 4, 5, 6, 7}

Lo mismo aplica a update():

A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}

A.update(B, C)
print(A)

Salida:

{1, 2, 3, 4, 5, 6, 7}

También puedes encadenar el operador | entre varios sets:

result = {1, 2} | {3, 4} | {5, 6}
print(result)

Salida:

{1, 2, 3, 4, 5, 6}

Métodos en Lugar Relacionados

El mismo patrón en lugar vs. nuevo set aplica a todas las demás operaciones de sets. Vale la pena conocerlos junto con update().

intersection_update() y &=

Conserva solo los elementos que aparecen en todos los sets especificados.

A = {1, 2, 3, 4}
B = {2, 3, 5}

A.intersection_update(B)
print(A)   # only elements in both A and B

Salida:

{2, 3}

difference_update() y -=

Elimina cada elemento que también aparece en el otro set.

A = {1, 2, 3, 4}
B = {2, 4}

A.difference_update(B)
print(A)   # elements in A that are not in B

Salida:

{1, 3}

symmetric_difference_update() y ^=

Conserva solo los elementos que aparecen en exactamente uno de los dos sets — los elementos compartidos por ambos se descartan.

A = {1, 2, 3}
B = {2, 3, 4}

A.symmetric_difference_update(B)
print(A)   # elements in A or B, but not in both

Salida:

{1, 4}

union() vs update() — ¿Cuál Deberías Usar?

Usa union() (o |) cuando quieras mantener los sets originales intactos y trabajar con el resultado combinado como un valor separado. Es la elección correcta dentro de expresiones, valores de retorno de funciones, y en cualquier lugar donde la inmutabilidad sea importante.

Usa update() (o |=) cuando estés construyendo un set de forma incremental y no necesites preservar el original. Usa un poco menos de memoria porque no crea un objeto adicional.

# 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

Temas Relacionados

Práctica

Práctica
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?