gpt4 book ai didi

python - 类型错误 : unhashable type: 'list' in python chess program

转载 作者:行者123 更新时间:2023-12-01 00:28:09 27 4
gpt4 key购买 nike

我正在编写一个国际象棋程序并进行编码检查。我需要对手移动字典(其中包含国王的位置)中的 key 来查找将其置于检查位置的棋子的坐标。现在这给了我错误:

opponentpieceposition=opponentposition.get(piece)
TypeError: unhashable type: 'list'.

请注意,下面的示例应打印 (1,6)

king=(5,1)
opponentmoves={'ksknight': [(8, 3), (5, 2), (6, 3)],
'ksbishop': [(3, 6), (4, 7), (5, 8), (1, 4), (1, 6), (3, 4), (4, 3), (5, 1), (6, 1)],
'king': [(6, 1), (5, 2), (4, 1)],
'queen': [(4, 5), (2, 4), (1, 3), (2, 6), (1, 7), (4, 4)],
'qsknight': [(3, 3), (1, 3)]}
opponentposition={'ksknight': (1, 3),
'ksbishop': (1, 6),
'king': (6, 1),
'queen': (4, 5),
'qsknight': (3, 3)}
if king in [z for v in opponentmoves.values() for z in v]:
piece=[key for key in opponentmoves if king in opponentmoves[key]]
opponentpieceposition=opponentposition.get(piece)
print(opponentpieceposition)

最佳答案

列表和其他可变类型的对象不能用作字典中的键(或集合中的元素)。

这些容器依赖于计算哈希值,该哈希值是插入时对象“内容”的函数。因此,如果对象(如可变对象)在插入后发生变化,就会出现问题。

您可以使用不可变序列的元组。

duplicate

关于python - 类型错误 : unhashable type: 'list' in python chess program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58389828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com