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)
我米不知道这里可能是错的... 我感谢帮助!
答
字典中的键类型为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)]
键是字符串,但它看起来像你试图使用元组。 – smarx
尝试'database_5x5 [str(bottom)]' – Umair
或者将字典更改为以元组为键,或者在查找时将元组转换为字符串(例如'database_5x5 [str(bottom)]')。 – smarx