Chcę przetestować obecność klucza w słowniku jako "jeśli klucz nie znajduje się w słowniku: zrób coś" Już zrobiłem to już wiele razy, ale tym razem zachowuje się dziwnie.python 2.7 obecność w słowniku
szczególnie:
termCircuit = termCircuitMap[term]
powraca KeyError
kiedy debugowania tego kodu w Eclipse PyDev, mam następujący (przy użyciu wyrażeń):
term in termCircutiMap # prints False
term in termCircuitMap.keys() # prints True
Czy ktoś zrozumieć, jak to jest możliwy? Pomyślałem, że jeśli coś jest "w" zestawie kluczy, to jest "w" słowniku.
Załączam zrzut ekranu oceny.
dziękuję za wyjaśnienie :)
to jest dziwne ... czy istnieje jakiś kod pomiędzy tymi dwoma instrukcjami warunkowymi? –
Jeśli faktycznie uruchamiasz te dwie linie bezpośrednio po sobie, nie ma żadnego wyjaśnienia błędu. 'klucz w aDict' jest w rzeczywistości szybszy i lepszy od' key in aDict.keys() ', ale _długo_ obie zwracają tę samą wartość. Czy jest możliwe, że coś zmieniło słownik pomiędzy tymi kontrolami? –
Czy możesz pokazać przykład rzeczywistego kodu, który demonstruje problem? Jaki jest typ kluczy w twoim dyktacie? Takie zachowanie może być możliwe, jeśli klucze są obiektami z niezgodnymi hasłami/definicjami równości. – BrenBarn