Lección 15 de 45 · Colecciones y texto

Sets

Usa un set cuando te importe qué valores existen, no cuántas veces aparecen ni en qué posición están.

Paso a pasoUnicidad y pertenenciaAvanza a tu ritmo
Índice · Lección 15/45
Una colección sin duplicados

Supón que registras cada visita a una página: ["Ana", "Leo", "Ana", "Mia"]. Para contar visitas necesitas conservar repeticiones. Pero para saber qué personas distintas han entrado, los duplicados sobran.

Ese segundo problema es terreno natural para un set.

Evidencia de aprendizaje

Elegir un set cuando la pregunta sea unicidad, pertenencia o elementos compartidos.

En un set, repetir un valor no lo multiplica

De visitas a visitantes únicos
visitas = ["Ana", "Leo", "Ana", "Mia", "Leo"]
visitantes = set(visitas)

print(len(visitas))
print(len(visitantes))

La lista tiene cinco entradas porque conserva cada visita. El set tiene tres elementos porque cada nombre aparece una sola vez.

No dependas del orden al imprimir un set. Su propósito principal no es representar posiciones, sino pertenencia y unicidad.

La pregunta más natural para un set es «¿está o no está?»

Comprobar pertenencia
permisos = {"leer", "comentar"}

print("leer" in permisos)
print("borrar" in permisos)

La primera comprobación produce True y la segunda False. Cuando solo quieres saber si un valor pertenece a un grupo, esta lectura es muy directa.

Dos grupos pueden compararse sin bucles manuales

Los sets también permiten expresar operaciones de conjuntos. No necesitas memorizarlas todas; quédate con una que resulta intuitiva:

Elementos que aparecen en ambos grupos
curso_a = {"Ana", "Leo", "Mia"}
curso_b = {"Leo", "Mia", "Noa"}

comunes = curso_a & curso_b
print(len(comunes))

& calcula la intersección: los elementos presentes en los dos sets. El resultado contiene a Leo y Mia.

No memorices símbolos por obligación: si todavía no recuerdas &, puedes consultarlo. Lo importante es reconocer que el problema «¿qué valores comparten estos grupos?» encaja bien con sets.

Resuelve tres preguntas que delatan un set

Únicos

¿Cuántas personas distintas visitaron?

Pertenece

¿“Ana” está entre quienes visitaron?

Comparte

¿Qué nombres aparecen en dos grupos?

Conjunto vacío: usa set(). {} crea un diccionario vacío.

Crea el set de visitantes únicos, comprueba la pertenencia de Ana y calcula cuántas personas aparecen también en el segundo grupo.

Salida esperada
3
True
1
sets.py
La salida aparecerá aquí.

Necesito una pista
  • Convierte visitas con set(...).
  • Después las operaciones de pertenencia e intersección ya funcionan de forma natural.
Ver una solución razonada
visitas = ["Ana", "Leo", "Ana", "Mia", "Leo"]
otro_grupo = {"Ana", "Noa"}
visitantes = set(visitas)

print(len(visitantes))
print("Ana" in visitantes)
print(len(visitantes & otro_grupo))

El set equivocado: cuando sí te importa el orden o la repetición

No conviertas automáticamente una lista en set solo porque ves duplicados. Si registras posiciones de carrera, historial de compras o una secuencia de pasos, el orden y las repeticiones pueden tener significado. Elimina duplicados solo cuando el problema realmente trate de valores únicos.

Recupera lo anterior · minuto 3

Sin mirar apuntes

Una agenda necesita conservar contactos en orden, cada contacto tiene nombre/teléfono, y quieres saber qué etiquetas únicas se han usado. ¿Qué estructuras encajan?

Comprobar

Lista para la secuencia de contactos, diccionario para los datos de cada contacto y set para las etiquetas únicas. La elección depende de la pregunta, no de una estructura “mejor”.

La frase que identifica este tipo de colección

Si puedes describir tu necesidad como «quiero saber qué valores distintos hay», «quiero comprobar si este valor pertenece al grupo» o «quiero comparar dos grupos», piensa en un set.

Listo para índices y slicing

Si sabes explicar por qué una lista de visitas y un set de visitantes responden preguntas diferentes, has entendido la razón de existir de los sets.