266 votes

J'obtiens l'erreur Key dans python

Dans mon programme python, j'obtiens cette erreur :

KeyError: 'variablename'

De ce code :

path = meta_entry['path'].strip('/'),

Quelqu'un peut-il expliquer pourquoi cela se produit ?

343voto

RanRag Points 9395

A KeyError signifie généralement que la clé n'existe pas. Donc, vous êtes sûr que la path existe ?

Extrait de la documentation officielle de Python :

exception KeyError

Lancé lorsqu'une clé de mappage (dictionnaire) n'est pas trouvée dans l'ensemble des clés existantes. clés existantes.

Par exemple :

>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>

Essayez donc d'imprimer le contenu de meta_entry et vérifier si path existe ou non.

>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}

Ou, vous pouvez le faire :

>>> 'a' in mydict
True
>>> 'c' in mydict
False

164voto

Adam Lewis Points 2058

Je suis tout à fait d'accord avec les commentaires sur les erreurs clés. Vous pourriez également utiliser le get() du dictionnaire pour éviter les exceptions. Ceci pourrait également être utilisé pour donner un chemin par défaut plutôt que None comme indiqué ci-dessous.

>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None

49voto

keywind Points 133

Pour le dict, il suffit d'utiliser

if key in dict

et n'utilisez pas la recherche dans la liste des clés

if key in dict.keys()

Cette dernière sera plus longue à mettre en œuvre.

6voto

Glenn Yu Points 169

Oui, il est très probablement causé par une clé inexistante.

Dans mon programme, j'ai utilisé setdefault pour couper cette erreur, par souci d'efficacité. selon l'efficacité de cette ligne

>>>'a' in mydict.keys()  

Je suis également novice en matière de Python. En fait, je viens de l'apprendre aujourd'hui. Pardonnez-moi donc mon ignorance en matière d'efficacité.

En Python 3, vous pouvez également utiliser cette fonction,

get(key[, default]) [function doc][1]

Il est dit qu'il ne soulèvera jamais une erreur de clé.

4voto

Muthu Kumar Points 141

Simplifions les choses si vous utilisez Python 3.

mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
    print('c key is present')

Si vous avez besoin d'une autre condition

mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
    print('key present')
else:
    print('key not found')

Pour la valeur de la clé dynamique, vous pouvez également gérer le bloc 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'}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X