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?
python
dictionary
David Liaw
źródło
źródło
Key error
ogólnie oznacza, żekey
nie istnieje. Czy na pewno istnieje „ścieżka”?meta_entry
i upewnij się, że klucz istnieje.Odpowiedzi:
KeyError
Oznacza zazwyczaj klucz nie istnieje. Jesteś pewien, żepath
klucz istnieje?Z oficjalnych dokumentów Pythona:
wyjątek KeyError
Na przykład:
Spróbuj wydrukować zawartość
meta_entry
i sprawdź, czypath
istnieje.Lub możesz zrobić:
źródło
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 zawierapath
.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.źródło
Do dykta wystarczy użyć
if key in dict
i nie używaj wyszukiwania na liście kluczy
if key in dict.keys()
Ten ostatni będzie bardziej czasochłonny.
źródło
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
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,
Mówi się, że nigdy nie spowoduje to błędu kluczowego.
źródło
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ą.
Wynik:
źródło
Ten błąd wystąpił podczas analizowania
dict
z zagnieżdżeniemfor
:Traceback:
Ponieważ w drugiej pętli powinno być
cats[cat]
zamiast tego po prostucat
(co jest tylko kluczem)Więc:
Daje
źródło
Na przykład, jeśli jest to liczba:
Działa idealnie, ale jeśli używasz na przykład:
to nie działa, ponieważ wprowadzony ciąg znaków „1”. Musisz więc użyć int ()
źródło
Uprośćmy to, jeśli używasz języka Python 3
Jeśli potrzebujesz innego warunku
W przypadku wartości klucza dynamicznego można również obsługiwać za pomocą bloku try-wyjątku
źródło