Skip to content

Errores comunes con diccionarios en Python (y cómo evitarlos)

Ben Kemp | Python/SQL/PowerBI/Excel Tutorials edited this page Jan 12, 2026 · 2 revisions

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.


Error 1: Acceder a una clave que no existe

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"))

Error 2: Usar in para buscar valores en lugar de claves

usuario = {"nombre": "Ana", "edad": 30}
print("Ana" in usuario)

Salida:

False

❌ in verifica claves, no valores.

Cómo evitarlo:

print("Ana" in usuario.values())

Error 3: Modificar un diccionario mientras se recorre

datos = {"a": 1, "b": 2, "c": 3}

for k in datos:
    if datos[k] > 1:
        del datos[k]

Salida:

RuntimeError: dictionary changed size during iteration

Cómo evitarlo:

for k in list(datos.keys()):
    if datos[k] > 1:
        del datos[k]

Error 4: Confundir keys(), values() e items()

for k, v in usuario:
    print(k, v)

Salida:

ValueError: too many values to unpack

Cómo evitarlo:

for k, v in usuario.items():
    print(k, v)

Error 5: Usar listas como claves de diccionario

datos = {[1, 2]: "valor"}

Salida:

TypeError: unhashable type: 'list'

Cómo evitarlo:

datos = {(1, 2): "valor"}

✔ Usa tuplas (inmutables) como claves.

Error 6: Asumir que el orden no importa (en versiones modernas)

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.

Error 7: Copiar diccionarios por referencia sin querer

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()

Error 8: No usar setdefault() cuando corresponde

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] += 1

Error 9: Asumir que values() devuelve una lista

valores = usuario.values()
valores.append(40)

Salida:

AttributeError: 'dict_values' object has no attribute 'append'

Cómo evitarlo:

valores = list(usuario.values())

Error 10: Usar diccionarios cuando una estructura simple basta

config = {"modo": "debug"}

⚠ A veces una variable simple o constante es suficiente.

Cómo evitarlo:

Usa diccionarios cuando:

  • Hay múltiples atributos
  • Se accede por clave
  • El modelo de datos lo justifica

Reglas prácticas para evitar errores con diccionarios

  • 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

Conclusión

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

Clone this wiki locally