当键在字典中时出现 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)]