python · Python
El mensaje
KeyError: 'name'
Qué significa
La clave no está en el dict, y el texto entre comillas es justo la clave que buscó: empieza por ahí, porque suele ser un error de tecleo, una diferencia de mayúsculas, o una respuesta de API cuya forma no es la que suponías. Si el valor es realmente opcional, d.get("name") devuelve None y d.get("name", 0) da un valor por defecto; pero usar .get en un valor obligatorio cambia el error por un None que viaja por tu código y estalla mucho más lejos.
El arreglo
No hay un comando de una línea. La explicación dice qué revisar.
- Lo imprime
- python
- Python
- 18
Un traceback de Python divide la respuesta en dos: la última línea dice qué falló y los marcos de arriba dicen dónde, así que leer solo la última línea te da el nombre y te quita el lugar; y en los errores por valor ausente, como NoneType y KeyError, la causa casi siempre está en un marco superior al que se rompió.
Cómo leer un mensaje de error
- Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
- Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
- Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
- La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
- Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.
Preguntas frecuentes
Q. ¿Qué significa «KeyError: 'name'»?
La clave no está en el dict, y el texto entre comillas es justo la clave que buscó: empieza por ahí, porque suele ser un error de tecleo, una diferencia de mayúsculas, o una respuesta de API cuya forma no es la que suponías. Si el valor es realmente opcional, d.get("name") devuelve None y d.get("name", 0) da un valor por defecto; pero usar .get en un valor obligatorio cambia el error por un None que viaja por tu código y estalla mucho más lejos.
Q. ¿Cómo se arregla?
No hay comando de una línea. La explicación de arriba dice qué revisar.
Q. ¿Qué herramienta lo imprime?
python. Está en Python y el mensaje tiene 2 palabras.