2012-11-24 66 views
3

每當我刪除python中的部分字典時,都會收到此錯誤。 早期我有Python中的鍵錯誤4

del the_dict[1] 

再後來,當我通過字典跑我立刻得到錯誤

test_self = the_dict[element_x] 

KeyError異常:4

沒有人有任何的想法是什麼錯誤。一切都從字典中正確刪除,但當我回去搜索它時,我得到這個錯誤。

+1

顯示最小,但完整的程序,證明了你的問題。 – melpomene

+4

請注意,'KeyError:4'並不意味着錯誤號碼4,而是你正在尋找一個值爲'4'的字典中的一個鍵,但它不存在。這有助於解釋信息嗎? –

+0

字典中的元素不在索引上訪問,而是在鍵上訪問。值「1」是你的鑰匙,或者,你正在使用它作爲索引。 –

回答

7

看來你是錯誤地試圖訪問索引上的字典元素。你不能那樣做。您需要訪問密鑰上的字典值。由於字典沒有排序。

E.g: -

>>> my_dict = {1:2, 3:4} 
>>> my_dict 
{1: 2, 3: 4} 
>>> 
>>> del my_dict[0] # try to delete `key: 1` 

Traceback (most recent call last): 
    File "<pyshell#18>", line 1, in <module> 
    del my_dict[0] 
KeyError: 0 
>>> del my_dict[1] # Access by key value. 
>>> my_dict # dict after deleting key 
{3: 4} 
>>> my_dict[1] # Trying to access deleted key. 

Traceback (most recent call last): 
    File "<pyshell#26>", line 1, in <module> 
    my_dict[1] 
KeyError: 1 

Everything is properly deleted from the dictionary, but when I go back to search through it

當然你不能得到鍵的值,你已經刪除。那會給你KeyError。你爲什麼要這樣做?我的意思是,爲什麼你想訪問你知道不存在的東西?

或者,您可以使用in運營商來檢查你的字典鍵的存在: -

>>> my_dict = {1:2 , 3:4} 
>>> 4 in my_dict 
False 
>>> 1 in my_dict 
True 
+0

對不起,我認爲我沒有正確解釋。 1-10是字典的關鍵。所以字典看起來像the_dict = {1:'a',2:'b',3:'c'....}所以後來當我回到字典並詢問什麼是the_dict [2]時,我得到了錯誤。 – ben

+1

@ben ..好吧,然後看看第一個代碼下面的解釋。我認爲你在刪除它後試圖訪問一個密鑰。你不能這樣做。 –

+0

請我上面的評論來澄清我的原始解釋。 – ben