-
Notifications
You must be signed in to change notification settings - Fork 0
Errores comunes con sets en Python (y cómo evitarlos)
Los sets en Python son muy potentes para eliminar duplicados y realizar operaciones de conjuntos,
pero su naturaleza no ordenada y ciertas particularidades generan errores frecuentes.
Esta página muestra errores reales, explica por qué ocurren y cómo evitarlos correctamente.
datos = {3, 1, 2}
print(datos)Salida (orden no garantizado):
{1, 2, 3}⚠ El orden puede cambiar entre ejecuciones.
Cómo evitarlo:
ordenados = sorted(datos)conjunto = {10, 20, 30}
print(conjunto[0])Salida:
TypeError: 'set' object is not subscriptableCómo evitarlo: Usa listas si necesitas acceso por índice:
lista = list(conjunto)
print(lista[0])vacio = {}
print(type(vacio))Salida:
<class 'dict'>❌ Esto crea un diccionario.
Cómo evitarlo:
vacio = set()numeros = {1, 2, 3}
numeros.remove(4)Salida:
KeyError: 4Cómo evitarlo:
numeros.discard(4)conjunto = set()
conjunto.add([1, 2])Salida:
TypeError: unhashable type: 'list'Cómo evitarlo:
conjunto.add((1, 2))✔ Usa tuplas (inmutables).
valores = {1, 2, 2, 3}
print(valores)Salida:
{1, 2, 3}⚠ Los duplicados se eliminan automáticamente.
Cómo evitar confusión: Usa listas si necesitas duplicados.
numeros = {1, 2, 3, 4}
for n in numeros:
if n % 2 == 0:
numeros.remove(n)Salida:
RuntimeError: Set changed size during iterationCómo evitarlo:
for n in set(numeros):
if n % 2 == 0:
numeros.remove(n)dias = {"lunes", "martes", "miércoles"}⚠ El orden no está garantizado.
Cómo evitarlo: Usa listas si el orden es relevante.
fs = frozenset([1, 2, 3])
fs.add(4)Salida:
AttributeError: 'frozenset' object has no attribute 'add'Cómo evitarlo: Usa set() si necesitas modificar el conjunto.
usuarios = {"Ana", "Luis", "Marta"}⚠ No puedes asociar datos adicionales.
Cómo evitarlo:
usuarios = {
"Ana": 30,
"Luis": 25,
"Marta": 28
}- No dependas del orden
- No intentes acceder por índice
- Usa discard() cuando no estés seguro
- Recuerda que no admiten duplicados
- Usa listas o diccionarios cuando el caso lo requiera
Conclusión
Los sets son ideales para pertenencia y operaciones de conjuntos, pero no sustituyen a listas ni diccionarios.
Usarlos correctamente hace tu código:
- Más eficiente
- Más claro
- Menos propenso a errores
Wiki educativa con ejemplos prácticos de Python en español, enfocada en aprendizaje claro y aplicable.
Todos los ejemplos muestran código y salida real.
📘 Índice principal: Home
🔁 Contenido actualizado regularmente
🌐 Relacionado: SolveConPython (versión en español en desarrollo)