W moim programie python pojawia się ten błąd:
KeyError: 'variablename'
Z tego kodu:
path = meta_entry['path'].strip('/'),
Czy ktoś może wyjaśnić, dlaczego tak się dzieje?
meta_entry
i upewnij się, że klucz istnieje.
W moim programie python pojawia się ten błąd:
KeyError: 'variablename'
Z tego kodu:
path = meta_entry['path'].strip('/'),
Czy ktoś może wyjaśnić, dlaczego tak się dzieje?
meta_entry
i upewnij się, że klucz istnieje.
Odpowiedzi:
KeyError
Oznacza zazwyczaj klucz nie istnieje. Jesteś pewien, że path
klucz istnieje?
Z oficjalnych dokumentów Pythona:
wyjątek KeyError
Wywoływany, gdy nie znaleziono klucza mapowania (słownika) w zestawie istniejących kluczy.
Na przykład:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
Spróbuj wydrukować zawartość meta_entry
i sprawdź, czy path
istnieje.
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
Lub możesz zrobić:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
path = meta_entry['path'].strip('/'),
jest częścią kodu lub silnika. Jeśli jest częścią silnika, obawiam się, że nic nie da się zrobić.
print meta_entry
i sprawdź, czy zawiera path
.
W pełni zgadzam się z komentarzami dotyczącymi błędu klucza. Możesz także użyć metody get () w słowniku, aby uniknąć wyjątków. Można to również wykorzystać do podania domyślnej ścieżki, a nie None
jak pokazano poniżej.
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
Tak, najprawdopodobniej jest to spowodowane nieistniejącym kluczem.
W moim programie użyłem setdefault, aby wyciszyć ten błąd ze względu na wydajność. w zależności od wydajności tej linii
>>>'a' in mydict.keys()
Też jestem nowy w Pythonie. Właściwie właśnie się tego nauczyłem dzisiaj. Więc wybacz mi ignorancję skuteczności.
W Pythonie 3 możesz także użyć tej funkcji,
get(key[, default]) [function doc][1]
Mówi się, że nigdy nie spowoduje to błędu kluczowego.
Oznacza to, że w tablicy brakuje szukanego klucza. Obsługuję to funkcją, która albo zwraca wartość, jeśli istnieje, albo zwraca wartość domyślną.
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')
Wynik:
1
2
#default
Ten błąd wystąpił podczas analizowania dict
z zagnieżdżeniem 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'
Ponieważ w drugiej pętli powinno być cats[cat]
zamiast tego po prostucat
(co jest tylko kluczem)
Więc:
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])
Daje
black
10
white
8
Na przykład, jeśli jest to liczba:
ouloulou={
1:US,
2:BR,
3:FR
}
ouloulou[1]()
Działa idealnie, ale jeśli używasz na przykład:
ouloulou[input("select 1 2 or 3"]()
to nie działa, ponieważ wprowadzony ciąg znaków „1”. Musisz więc użyć int ()
ouloulou[int(input("select 1 2 or 3"))]()
Uprośćmy to, jeśli używasz języka Python 3
mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
print('c key is present')
Jeśli potrzebujesz innego warunku
mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
print('key present')
else:
print('key not found')
W przypadku wartości klucza dynamicznego można również obsługiwać za pomocą bloku try-wyjątku
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 error
ogólnie oznacza, żekey
nie istnieje. Czy na pewno istnieje „ścieżka”?