Sets en Python: guía completa de conjuntos

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
Ilustração representando conjuntos (sets) em Python

Los sets o conjuntos de Python almacenan elementos únicos y permiten realizar búsquedas, uniones, intersecciones y diferencias. Son especialmente útiles para eliminar duplicados, comparar grupos y validar pertenencia. A diferencia de una lista, un set no está diseñado para mantener posiciones ni acceder mediante índices.

Para ampliar conceptos, consulta las guías sobre listas, tuplas, diccionarios, comprensiones y operadores. Como fuentes externas, revisa la documentación oficial de set y frozenset y el tutorial oficial de estructuras de datos.

Crear un set

lenguajes = {"Python", "Java", "JavaScript"}
print(lenguajes)

Los duplicados se eliminan automáticamente. El orden mostrado no debe utilizarse como parte de la lógica.

El set vacío

vacio = set()

{} crea un diccionario vacío, no un set. Esta diferencia es una fuente frecuente de errores para principiantes.

Eliminar duplicados

correos = [
    "[email protected]",
    "[email protected]",
    "[email protected]",
]

unicos = set(correos)
print(unicos)

La conversión no conserva necesariamente el orden. Si necesitas eliminar duplicados manteniendo la primera aparición, puedes utilizar list(dict.fromkeys(correos)).

Comprobar pertenencia

extensiones = {".pdf", ".csv", ".json"}

if ".csv" in extensiones:
    print("Formato permitido")

La pertenencia es uno de los usos principales de los sets. Para grupos grandes suele ser más apropiada que recorrer una lista repetidamente.

Añadir elementos

extensiones.add(".txt")
extensiones.update({".xml", ".yaml"})

add() añade un elemento. update() consume un iterable y añade cada elemento. Pasar una cadena directamente a update() agregaría sus caracteres, por lo que debe envolverse en una colección cuando representa un único valor.

Eliminar elementos

extensiones.remove(".xml")
extensiones.discard(".desconocida")

remove() lanza KeyError si el elemento no existe. discard() no falla. Elige según si la ausencia representa un error.

pop() no elimina el último

elemento = extensiones.pop()

Como los sets no tienen un orden de posición contractual, pop() elimina un elemento arbitrario. No lo uses para obtener “el primero” o “el último”.

Unión

backend = {"Python", "SQL", "Docker"}
frontend = {"JavaScript", "CSS", "Docker"}

todas = backend | frontend
# también: backend.union(frontend)

La unión contiene todos los elementos sin duplicados.

Intersección

comunes = backend & frontend

La intersección muestra elementos presentes en ambos grupos. Es útil para comparar permisos, etiquetas, habilidades o identificadores.

Diferencia

solo_backend = backend - frontend

La diferencia no es simétrica: a - b y b - a pueden producir resultados distintos.

Diferencia simétrica

exclusivos = backend ^ frontend

Devuelve elementos presentes en uno de los grupos, pero no en ambos.

Subconjuntos y superconjuntos

requeridos = {"Python", "SQL"}
candidato = {"Python", "SQL", "Git"}

if requeridos <= candidato:
    print("Cumple todos los requisitos")

<= comprueba subconjunto y >= superconjunto. Las variantes estrictas < y > exigen que los grupos no sean iguales.

Elementos permitidos

Los miembros deben ser hashables. Strings, números y tuplas inmutables suelen ser válidos. Listas, diccionarios y sets normales no pueden ser elementos porque pueden cambiar.

coordenadas = {(10, 20), (30, 40)}

frozenset

permisos = frozenset({"leer", "escribir"})

frozenset es inmutable y puede utilizarse como clave de diccionario o miembro de otro set. Es útil para configuraciones que no deben modificarse.

Comprensiones de set

cuadrados = {numero ** 2 for numero in range(-5, 6)}

Los resultados duplicados se eliminan. En este ejemplo, números positivos y negativos producen algunos cuadrados iguales.

Comparar archivos o registros

ids_anteriores = {"A1", "A2", "A3"}
ids_actuales = {"A2", "A3", "A4"}

nuevos = ids_actuales - ids_anteriores
eliminados = ids_anteriores - ids_actuales
sin_cambios = ids_actuales & ids_anteriores

Este patrón es práctico para sincronizaciones y auditorías.

Mutación durante iteración

No añadas ni elimines elementos del mismo set que estás recorriendo. Crea una copia, construye un nuevo conjunto o calcula primero los elementos que deben cambiar.

for valor in conjunto.copy():
    if debe_eliminarse(valor):
        conjunto.discard(valor)

Sets y orden

Si la salida necesita un orden estable, ordénala al mostrar: sorted(conjunto). No conviertas el orden observado en una dependencia, porque no es la finalidad de esta estructura.

Rendimiento y memoria

Un set suele ofrecer comprobaciones de pertenencia rápidas porque utiliza una tabla hash. Esa ventaja tiene un coste de memoria superior al de una lista sencilla. No conviertas automáticamente todas las colecciones en sets: si solo recorres los datos una vez, necesitas duplicados o dependes del orden, una lista puede ser más adecuada. Elige la estructura según las operaciones principales.

Copias y actualizaciones en el lugar

Métodos como intersection_update(), difference_update() y symmetric_difference_update() modifican el set existente. Las operaciones con símbolos suelen producir uno nuevo. Esta diferencia importa cuando varias variables comparten la misma referencia. Si deseas conservar el original, usa copy() antes de una actualización destructiva.

Pruebas y errores frecuentes

Prueba sets vacíos, grupos iguales, elementos ausentes y datos duplicados. Los errores habituales son crear un diccionario con {}, intentar añadir listas, usar pop() como si existiera orden, perder el orden original al eliminar duplicados y confundir diferencia con diferencia simétrica.

Elegir set frente a diccionario

Si necesitas asociar información adicional a cada clave, utiliza un diccionario. Un set solo representa presencia o ausencia. Esta distinción mantiene el modelo simple y evita estructuras paralelas difíciles de sincronizar.

Conclusión

Los sets son la herramienta adecuada cuando importan unicidad, pertenencia y relaciones entre grupos. Utiliza unión, intersección y diferencia para expresar reglas de forma clara. Recurre a frozenset cuando necesites inmutabilidad y ordena únicamente en el momento de presentar los resultados.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Ilustração que representa um algoritmo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Qué es un algoritmo en programación: guía con Python

    Entiende qué es un algoritmo, cómo describirlo con pseudocódigo, analizar su complejidad y convertirlo en funciones Python comprobables.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Leitura e escrita de arquivos CSV em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Archivos CSV en Python: leer, escribir y procesar datos

    Aprende a leer, escribir, validar y transformar CSV en Python con csv, DictReader, DictWriter, UTF-8, streaming y protección contra errores.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Programador resolvendo problemas com Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Lógica de programación con Python para principiantes

    Aprende lógica de programación con Python mediante algoritmos, pseudocódigo, condiciones, bucles, funciones, validación y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    texto 'operadores em Python' com os simbolos de operadores e o logo do Python à direita
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operadores en Python: guía completa con ejemplos

    Aprende operadores aritméticos, lógicos, de comparación, identidad, pertenencia, bits, sets y precedencia en Python.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Símbolo de repetição ao lado do logotipo do Python pensativo, representando o conceito de loops na programação em Python.
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles en Python: for y while explicados con ejemplos

    Aprende bucles for y while en Python con range, enumerate, zip, break, continue, else, comprensiones, generadores y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    ícone de loop com o texto 'While' abaixo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles while en Python: guía práctica para principiantes

    Aprende bucles while en Python con condiciones, validación, menús, break, continue, else, centinelas, reintentos y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026