Agregar elementos a un conjunto
Aprende a agregar elementos a un conjunto de Python con add() para un solo elemento y update() para varios valores de cualquier iterable.
Los conjuntos de Python son colecciones desordenadas de elementos únicos. Una vez creado un conjunto, puedes ampliarlo en cualquier momento usando dos métodos dedicados: add() para insertar un solo elemento y update() para insertar varios elementos a la vez desde cualquier iterable. Este capítulo cubre ambos métodos en profundidad, explica cuándo usar cada uno y destaca los errores más comunes.
Si eres nuevo en los conjuntos, lee primero el capítulo Python Sets. Para aprender a eliminar elementos, consulta Remove Set Items.
El método add()
add() inserta un elemento en el conjunto. Si el elemento ya existe, el conjunto no cambia — no se genera ningún error ni se crea un duplicado.
Sintaxis
set.add(element)element— el valor a insertar. Debe ser hashable (strings, números, tuplas de valores hashable, etc.). Las listas y los diccionarios no se pueden agregar.- Valor de retorno:
None. El conjunto se modifica en su lugar.
Agregar un nuevo elemento
Agregar un string a un conjunto
Agregar un duplicado es seguro
Llamar a add() con un elemento que ya existe no hace nada — el conjunto mantiene el mismo tamaño:
Agregar un elemento duplicado a un conjunto
fruits = {'apple', 'banana', 'cherry'}
fruits.add('apple') # 'apple' is already present
print(fruits)
# {'apple', 'banana', 'cherry'} (unchanged)Esta es una de las propiedades más útiles de los conjuntos: nunca tienes que comprobar si un elemento existe antes de agregarlo.
add() solo acepta un argumento
add() toma exactamente un argumento. Para insertar varios elementos a la vez, usa update() en su lugar (consulta la siguiente sección).
# This raises TypeError: set.add() takes exactly one argument (2 given)
# fruits.add('kiwi', 'mango')add() requiere un elemento hashable
Solo los tipos hashable pueden almacenarse en un conjunto. Las listas y los diccionarios no son hashable, por lo que pasarlos a add() genera un TypeError:
s = {1, 2, 3}
# s.add([4, 5]) # TypeError: unhashable type: 'list'
# Use a tuple instead:
s.add((4, 5))
print(s)
# {1, 2, 3, (4, 5)}El método update()
update() agrega todos los elementos de uno o más iterables al conjunto en una sola llamada. Acepta cualquier iterable — otro conjunto, una lista, una tupla o incluso un string.
Sintaxis
set.update(iterable1, iterable2, ...)- Se puede pasar uno o más iterables.
- Los duplicados entre el conjunto existente y los nuevos elementos se ignoran silenciosamente.
- Valor de retorno:
None. El conjunto se modifica en su lugar.
Agregar elementos desde una lista
Actualizar un conjunto desde una lista
fruits = {'apple', 'banana'}
fruits.update(['cherry', 'date', 'elderberry'])
print(fruits)
# {'apple', 'banana', 'cherry', 'date', 'elderberry'}Agregar elementos desde otro conjunto
Combinar dos conjuntos con update()
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)
# {1, 2, 3, 4, 5}Ten en cuenta que update() modifica set1 en su lugar, mientras que union() devuelve un nuevo conjunto sin modificar ninguno de los originales.
Agregar desde varios iterables a la vez
Puedes pasar varios iterables a una sola llamada de update():
Actualizar un conjunto desde varios iterables
numbers = {1, 2, 3}
numbers.update([4, 5], {5, 6, 7})
print(numbers)
# {1, 2, 3, 4, 5, 6, 7}Pasar un string a update()
Como un string es iterable, update() lo divide en caracteres individuales. Esto generalmente no es lo que deseas, así que ten cuidado:
Actualizar con un string — agrega caracteres individuales
s = {'hello'}
s.update('abc')
print(s)
# {'hello', 'a', 'b', 'c'} — each character becomes a separate elementPara agregar un string completo como un solo elemento, usa add() en su lugar.
add() vs update() — Comparación rápida
add() | update() | |
|---|---|---|
| Número de elementos | Uno | Varios |
| Tipo de argumento | Un único valor hashable | Cualquier iterable (lista, conjunto, tupla, …) |
| ¿Modifica el conjunto en su lugar? | Sí | Sí |
| Devuelve | None | None |
Ejemplos prácticos
Construir un conjunto de etiquetas dinámicamente
Un caso de uso común es recopilar etiquetas o identificadores únicos mientras se ejecuta un programa:
Recopilar etiquetas únicas con un conjunto
tags = set()
# add() for one tag at a time
tags.add('python')
tags.add('tutorial')
tags.add('python') # duplicate — ignored
print(tags)
# {'python', 'tutorial'}
# update() to add several tags at once
tags.update(['coding', 'beginner', 'tutorial'])
print(tags)
# {'python', 'tutorial', 'coding', 'beginner'}Eliminar duplicados al acumular datos
Dado que add() ignora silenciosamente los duplicados, puedes usar un conjunto como acumulador para deduplicar elementos de múltiples fuentes:
Deduplicar elementos de dos listas usando un conjunto
batch1 = [101, 102, 103, 102]
batch2 = [103, 104, 105]
seen = set()
seen.update(batch1)
seen.update(batch2)
print(sorted(seen))
# [101, 102, 103, 104, 105]Puntos clave
- Los conjuntos almacenan solo elementos únicos;
add()yupdate()nunca crean duplicados. - Los conjuntos son desordenados — el orden de inserción no se conserva y puede variar entre ejecuciones.
add()inserta exactamente un elemento hashable;update()inserta todos los elementos de cualquier número de iterables.- Ambos métodos devuelven
Noney mutan el conjunto en su lugar. - Para combinar dos conjuntos en un nuevo conjunto sin modificar ninguno de los dos, usa
union()(consulta Set Methods).