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 ?

3voto

abrasadera Points 1216

J'ai reçu cette erreur lorsque j'ai analysé dict avec emboîtement 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])

Traceback :

Traceback (most recent call last):
      File "<input>", line 3, in <module>
    KeyError: 'K'

Parce que la deuxième boucle devrait être cats[cat] à la place juste cat (ce qui est juste une clé)

Donc :

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])

Donne

black
10
white
8

1voto

Ben Sullins Points 122

Cela signifie qu'il manque à votre tableau la clé que vous recherchez. Je gère cela avec une fonction qui renvoie la valeur si elle existe ou qui renvoie une valeur par défaut à la place.

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')

Sortie :

1
2
#default

0voto

lemoinemeddy Points 34

Par exemple, s'il s'agit d'un nombre :

ouloulou={
    1:US,
    2:BR,
    3:FR
    }
ouloulou[1]()

Ça marche parfaitement, mais si vous utilisez par exemple :

ouloulou[input("select 1 2 or 3"]()

cela ne fonctionne pas, car votre entrée renvoie la chaîne '1'. Vous devez donc utiliser int()

ouloulou[int(input("select 1 2 or 3"))]()

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