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
| Objetivo | Método | Operador | ¿Modifica el original? |
|---|---|---|---|
| Nuevo set con todos los elementos | union() | | | No — devuelve un nuevo set |
| Agregar todos los elementos en lugar | update() | |= | Sí |
| Nuevo set — solo elementos comunes | intersection() | & | No |
| Conservar solo elementos comunes | intersection_update() | &= | Sí |
| Nuevo set — elementos no presentes en el otro | difference() | - | No |
| Eliminar elementos presentes en el otro | difference_update() | -= | Sí |
| Nuevo set — elementos en uno pero no en ambos | symmetric_difference() | ^ | No |
| Conservar elementos en uno pero no en ambos | symmetric_difference_update() | ^= | Sí |
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
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
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 BSalida:
{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 BSalida:
{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 bothSalida:
{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 hereTemas Relacionados
- Python Sets — qué son los sets, cómo crearlos y sus propiedades clave
- Agregar Elementos a un Set — agregar elementos individuales y en bloque a un set
- Eliminar Elementos de un Set —
remove(),discard()ypop() - Acceder a Elementos de un Set — prueba de pertenencia e iteración
- Recorrer Sets — iterar sobre elementos de un set con
for - Métodos de Set — referencia completa de todos los métodos de set incorporados