Guía de diagnóstico

KeyError: el diccionario no contiene la clave que pediste

La solución correcta depende de una decisión de dominio: ¿esa clave debería existir siempre o es legítimamente opcional?

Revisado 2026-09-30Ejemplos y diagnóstico

Los corchetes expresan “esta clave es obligatoria”

usuario.py
usuario = {"nombre": "Ana"}
print(usuario["email"])

El acceso con [] hace visible una inconsistencia cuando falta una clave esperada. Eso puede ser exactamente lo que quieres durante desarrollo.

Cuatro estrategias, cuatro significados

d[clave]

La ausencia es un error. Úsalo cuando el dato forma parte del contrato.

clave in d

Necesitas distinguir explícitamente entre presencia y ausencia.

d.get(clave)

La ausencia es normal y None es un resultado útil para representarla.

try/except KeyError

Quieres agrupar la operación que depende de la clave y manejar la ausencia en un punto concreto.

No ocultes un bug con un valor por defecto

usuario.get("email", "") evita la excepción, pero también puede ocultar datos corruptos si el email era obligatorio. La ausencia debe tener un significado definido, no simplemente dejar de producir traceback.

Práctica: obligatorio frente a opcional

Imagina un pedido con id, precio y cupon. Decide cuál accederías con corchetes y cuál con get(). Justifica la elección por la regla del negocio, no por “qué código no falla”.

Señal de que ya lo entiendesPuedes provocar este error con un ejemplo mínimo, explicar qué supuesto se rompió y elegir una corrección que conserve la intención del programa.

Referencia técnica: documentación oficial de excepciones de Python.