KeyError钥匙在字典中

问题描述:

所以我偶然发现了这个奇怪的错误。我做了包含这些键的字典: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

字典中的键类型为string。你应该投bottom

next_moves = database_5x5[str(bottom)] 
+0

啊,所以这是当我睡眠不足时会发生什么...我想念这些基本的东西......谢谢! – Matthew

每个键在你的字典database_5x5是一个字符串,但您请求与元组关键bottom的元素。尝试转换密钥类型,例如,这样:

next_moves = database_5x5[str(bottom)] 

你的字典的键是字符串类型。所以你需要确定两件事。

1)该段tuple(puzzle[len(puzzle)-1])产生一个字符串。
2)(愚蠢的一个)空格和逗号完全匹配。

修复:
1)更改您的密钥不是字符串。
2)铸bottom到一个字符串 - database_5x5[str(bottom)]