-
Notifications
You must be signed in to change notification settings - Fork 0
Errores comunes con diccionarios en Python (y cómo evitarlos)
Los diccionarios son extremadamente útiles, pero también generan errores frecuentes, especialmente al acceder a claves, modificar datos y recorrer su contenido.
Esta página recoge errores reales, explica por qué ocurren y muestra cómo evitarlos correctamente.
usuario = {"nombre": "Ana", "edad": 30}
print(usuario["ciudad"])
```python
Salida:
```python
KeyError: 'ciudad'Cómo evitarlo:
print(usuario.get("ciudad"))O con valor por defecto:
print(usuario.get("ciudad", "Desconocida"))usuario = {"nombre": "Ana", "edad": 30}
print("Ana" in usuario)Salida:
False❌ in verifica claves, no valores.
Cómo evitarlo:
print("Ana" in usuario.values())datos = {"a": 1, "b": 2, "c": 3}
for k in datos:
if datos[k] > 1:
del datos[k]Salida:
RuntimeError: dictionary changed size during iterationCómo evitarlo:
for k in list(datos.keys()):
if datos[k] > 1:
del datos[k]for k, v in usuario:
print(k, v)Salida:
ValueError: too many values to unpackCómo evitarlo:
for k, v in usuario.items():
print(k, v)datos = {[1, 2]: "valor"}Salida:
TypeError: unhashable type: 'list'Cómo evitarlo:
datos = {(1, 2): "valor"}✔ Usa tuplas (inmutables) como claves.
dic = {"a": 1, "b": 2, "c": 3}
print(dic)Salida (Python 3.7+):
{'a': 1, 'b': 2, 'c': 3}ℹ️ El orden de inserción sí se conserva en Python moderno.
Cómo evitar confusión: No dependas del orden si no es necesario.
a = {"x": 1}
b = a
b["y"] = 2
print(a)Salida:
{'x': 1, 'y': 2}❌ Ambas variables apuntan al mismo diccionario.
Cómo evitarlo:
b = a.copy()conteo = {}
palabras = ["python", "python", "java"]
for p in palabras:
if p not in conteo:
conteo[p] = 0
conteo[p] += 1
print(conteo)✔ Funciona, pero es verboso.
Cómo evitarlo:
conteo = {}
for p in palabras:
conteo.setdefault(p, 0)
conteo[p] += 1valores = usuario.values()
valores.append(40)Salida:
AttributeError: 'dict_values' object has no attribute 'append'Cómo evitarlo:
valores = list(usuario.values())config = {"modo": "debug"}⚠ A veces una variable simple o constante es suficiente.
Cómo evitarlo:
- Hay múltiples atributos
- Se accede por clave
- El modelo de datos lo justifica
- Usa get() en lugar de acceso directo cuando la clave puede no existir
- Recuerda que in busca claves
- No modifiques el diccionario mientras lo recorres
- Copia con .copy() cuando sea necesario
- Usa tuplas como claves si necesitas compuestos
Los diccionarios son una de las herramientas más poderosas de Python, pero requieren cuidado. Aplicar estas buenas prácticas hará tu código:
- Más robusto
- Más legible
- Menos propenso a errores en tiempo de ejecución
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)