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?
meta_entryy asegúrese de que la clave que desea existe.
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?
meta_entryy asegúrese de que la clave que desea existe.
Respuestas:
A KeyErrorgeneralmente significa que la clave no existe. Entonces, ¿estás seguro de que la pathclave existe?
De los documentos oficiales de Python:
excepción KeyError
Se genera cuando no se encuentra una clave de mapeo (diccionario) en el conjunto de claves existentes.
Por ejemplo:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
Por lo tanto, intente imprimir el contenido meta_entryy verifique si pathexiste o no.
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
O puedes hacer:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
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_entryy verificar si contiene patho 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 Nonecomo se muestra a continuación.
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
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.
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
>>>'a' in mydict.keys()
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,
get(key[, default]) [function doc][1]
Se dice que nunca generará un error clave.
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.
def keyCheck(key, arr, default):
if key in arr.keys():
return arr[key]
else:
return default
myarray = {'key1':1, 'key2':2}
print keyCheck('key1', myarray, '#default')
print keyCheck('key2', myarray, '#default')
print keyCheck('key3', myarray, '#default')
Salida:
1
2
#default
Recibí este error cuando estaba analizando dictcon anidado for:
cats = {'Tom': {'color': 'white', 'weight': 8}, 'Klakier': {'color': 'black', 'weight': 10}}
cat_attr = {}
for cat in cats:
for attr in cat:
print(cats[cat][attr])
Rastrear:
Traceback (most recent call last):
File "<input>", line 3, in <module>
KeyError: 'K'
Porque en el segundo ciclo debería ser cats[cat]justo cat(lo que es solo una clave)
Entonces:
cats = {'Tom': {'color': 'white', 'weight': 8}, 'Klakier': {'color': 'black', 'weight': 10}}
cat_attr = {}
for cat in cats:
for attr in cats[cat]:
print(cats[cat][attr])
Da
black
10
white
8
Por ejemplo, si este es un número:
ouloulou={
1:US,
2:BR,
3:FR
}
ouloulou[1]()
Funciona perfectamente, pero si usas, por ejemplo:
ouloulou[input("select 1 2 or 3"]()
no funciona porque su entrada devuelve la cadena '1'. Entonces necesitas usar int ()
ouloulou[int(input("select 1 2 or 3"))]()
Permítanos simplificarlo si está usando Python 3
mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
print('c key is present')
Si necesitas otra condición
mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
print('key present')
else:
print('key not found')
Para el valor de clave dinámica, también puede manejar a través del bloque try-exception
mydict = {'a':'apple','b':'boy','c':'cat'}
try:
print(mydict['c'])
except KeyError:
print('key value not found')mydict = {'a':'apple','b':'boy','c':'cat'}
Key errorgeneralmente significakeyque no existe. Entonces, ¿estás seguro de que existe el 'camino'?