2017-10-06 89 views
1

所以我偶然發現了這個奇怪的錯誤。我做了包含這些鍵的字典:KeyError鑰匙在字典中

database_5x5 = {'(1, 0, 0, 0, 1)': [(0, 0), (0, 1)], 
       '(0, 1, 0, 1, 0)': [(0, 0), (0, 3)], 
       '(1, 1, 1, 0, 0)': [(0, 1)], 
       '(0, 0, 1, 1, 1)': [(0, 3)], 
       '(1, 0, 1, 1, 0)': [(0, 4)], 
       '(0, 1, 1, 0, 1)': [(0, 0)], 
       '(1, 1, 0, 1, 1)': [(0, 2)] 
       } 

這是訪問的字典代碼:

bottom = tuple(puzzle[len(puzzle)-1]) 
    next_moves = database_5x5[bottom] 

我的代碼運行,並給了我這個錯誤:

KeyError: (0, 1, 1, 0, 1) 

我米不知道這裏可能是錯的... 我感謝幫助!

+3

鍵是字符串,但它看起來像你試圖使用元組。 – smarx

+0

嘗試'database_5x5 [str(bottom)]' – Umair

+0

或者將字典更改爲以元組爲鍵,或者在查找時將元組轉換爲字符串(例如'database_5x5 [str(bottom)]')。 – smarx

回答

2

字典中的鍵類型爲string。你應該投bottom

next_moves = database_5x5[str(bottom)] 
+0

啊,所以這是當我睡眠不足時會發生什麼...我想念這些基本的東西......謝謝! – Matthew

1

每個鍵在你的字典database_5x5是一個字符串,但您請求與元組關鍵bottom的元素。嘗試轉換密鑰類型,例如,這樣:

next_moves = database_5x5[str(bottom)] 
0

你的字典的鍵是字符串類型。所以你需要確定兩件事。

1)該段tuple(puzzle[len(puzzle)-1])產生一個字符串。
2)(愚蠢的一個)空格和逗號完全匹配。

修復:
1)更改您的密鑰不是字符串。
2)鑄bottom到一個字符串 - database_5x5[str(bottom)]