Dans mon programme python, j'obtiens cette erreur:
KeyError: 'variablename'
À partir de ce code:
path = meta_entry['path'].strip('/'),
Quelqu'un peut-il expliquer pourquoi cela se produit?
python
dictionary
David Liaw
la source
la source
Key error
signifie généralement que lekey
n'existe pas. Alors, êtes-vous sûr que «chemin» existe.?meta_entry
et assurez-vous que la clé souhaitée existe.Réponses:
Un
KeyError
signifie généralement que la clé n'existe pas. Alors, êtes-vous sûr que lapath
clé existe?À partir de la documentation officielle de Python:
exception KeyError
Par exemple:
Alors, essayez d'imprimer le contenu de
meta_entry
et vérifiez s'ilpath
existe ou non.Ou, vous pouvez faire:
la source
path = meta_entry['path'].strip('/'),
fait partie de votre code ou du moteur. Si cela fait partie du moteur, je crains que rien ne puisse être fait.print meta_entry
et de vérifier s'il contientpath
ou non.Je suis entièrement d'accord avec les commentaires d'erreur clé. Vous pouvez également utiliser la méthode get () du dictionnaire pour éviter les exceptions. Cela pourrait également être utilisé pour donner un chemin par défaut plutôt que
None
comme indiqué ci-dessous.la source
Pour dict, utilisez simplement
if key in dict
et n'utilisez pas la recherche dans la liste des clés
if key in dict.keys()
Ce dernier prendra plus de temps.
la source
Oui, cela est probablement dû à une clé inexistante.
Dans mon programme, j'ai utilisé setdefault pour désactiver cette erreur, par souci d'efficacité. selon l'efficacité de cette ligne
Je suis également nouveau sur Python. En fait, je viens de l'apprendre aujourd'hui. Alors pardonnez-moi l'ignorance de l'efficacité.
En Python 3, vous pouvez également utiliser cette fonction,
On dit que cela ne soulèvera jamais une erreur clé.
la source
Cela signifie que votre tableau n'a pas la clé que vous recherchez. Je gère cela avec une fonction qui renvoie la valeur si elle existe ou renvoie une valeur par défaut à la place.
Production:
la source
J'ai reçu cette erreur lors de l'analyse
dict
avec imbriquéfor
:Traceback:
Parce que dans la deuxième boucle devrait être
cats[cat]
justecat
(ce qui n'est qu'une clé)Alors:
Donne
la source
Par exemple, s'il s'agit d'un nombre:
Cela fonctionne parfaitement, mais si vous utilisez par exemple:
cela ne fonctionne pas, car votre entrée renvoie la chaîne «1». Vous devez donc utiliser int ()
la source
Laissez-nous simplifier les choses si vous utilisez Python 3
Si vous avez besoin d'une autre condition
Pour la valeur de clé dynamique, vous pouvez également gérer via le bloc try-exception
la source