En mi programa de Python obtengo este error:
KeyError: 'variablename'
De este código:
path = meta_entry['path'].strip('/'),
¿Alguien puede explicar por qué sucede esto?
python
dictionary
David Liaw
fuente
fuente
Key error
generalmente significakey
que no existe. Entonces, ¿estás seguro de que existe el 'camino'?meta_entry
y asegúrese de que la clave que desea existe.Respuestas:
A
KeyError
generalmente significa que la clave no existe. Entonces, ¿estás seguro de que lapath
clave existe?De los documentos oficiales de Python:
excepción KeyError
Por ejemplo:
Por lo tanto, intente imprimir el contenido
meta_entry
y verifique sipath
existe o no.O puedes hacer:
fuente
path = meta_entry['path'].strip('/'),
es parte de su código o del motor. Si es parte del motor, me temo que no se puede hacer nada.print meta_entry
y verificar si contienepath
o no.Estoy totalmente de acuerdo con los comentarios de error clave. También puede usar el método get () del diccionario para evitar las excepciones. Esto también podría usarse para dar una ruta predeterminada en lugar de
None
como se muestra a continuación.fuente
Para dictar, solo use
if key in dict
y no use la búsqueda en la lista de claves
if key in dict.keys()
Esto último llevará más tiempo.
fuente
Sí, lo más probable es que sea causado por una clave no existente.
En mi programa, utilicé setdefault para silenciar este error, por cuestiones de eficiencia. dependiendo de qué tan eficiente es esta línea
Soy nuevo en Python también. De hecho, lo acabo de aprender hoy. Así que perdóname por la ignorancia de la eficiencia.
En Python 3, también puedes usar esta función,
Se dice que nunca generará un error clave.
fuente
Esto significa que a su matriz le falta la clave que está buscando. Manejo esto con una función que devuelve el valor si existe o en su lugar devuelve un valor predeterminado.
Salida:
fuente
Recibí este error cuando estaba analizando
dict
con anidadofor
:Rastrear:
Porque en el segundo ciclo debería ser
cats[cat]
justocat
(lo que es solo una clave)Entonces:
Da
fuente
Por ejemplo, si este es un número:
Funciona perfectamente, pero si usas, por ejemplo:
no funciona porque su entrada devuelve la cadena '1'. Entonces necesitas usar int ()
fuente
Permítanos simplificarlo si está usando Python 3
Si necesitas otra condición
Para el valor de clave dinámica, también puede manejar a través del bloque try-exception
fuente