当键在字典中时出现 KeyError
KeyError when key is in dictionary
所以我偶然发现了这个奇怪的错误。我制作了一本包含这些键的字典:
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)]
字典中的每个键 database_5x5
都是一个字符串,但是您请求一个带有 元组 键 bottom
的元素。尝试转换一个键类型,例如,这样:
next_moves = database_5x5[str(bottom)]
你的字典的键是字符串类型。所以你需要确定两件事。
1) 此段 tuple(puzzle[len(puzzle)-1])
生成一个字符串。
2)(傻一个)空格和逗号完全匹配。
修复:
1) 将您的密钥更改为非字符串。
2) 将 bottom
转换为字符串 - database_5x5[str(bottom)]
所以我偶然发现了这个奇怪的错误。我制作了一本包含这些键的字典:
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)]
字典中的每个键 database_5x5
都是一个字符串,但是您请求一个带有 元组 键 bottom
的元素。尝试转换一个键类型,例如,这样:
next_moves = database_5x5[str(bottom)]
你的字典的键是字符串类型。所以你需要确定两件事。
1) 此段 tuple(puzzle[len(puzzle)-1])
生成一个字符串。
2)(傻一个)空格和逗号完全匹配。
修复:
1) 将您的密钥更改为非字符串。
2) 将 bottom
转换为字符串 - database_5x5[str(bottom)]