我有多个元组列表,例如
[([1, 2, 3, 4], 2), ([5, 6, 7], 3)]
我希望将其作为字典的键(因此字典中的每个键都是一个元组列表)。
不幸的是,根据TypeError我得到的 ( unhashable type: list),python 似乎不喜欢哈希列表。我的元组列表中的所有元素都是 int(如果这有区别的话)。有什么建议吗?谢谢!
TypeError
unhashable type: list
Python 中的字典键必须是 可哈希 的,然而 list 是不可哈希的,因为它是可变的(你可以修改列表的内容)。如果你尝试使用包含列表的元组作为字典的键,就会出现 TypeError: unhashable type: 'list' 错误。
list
TypeError: unhashable type: 'list'
为了使元组中的列表能够作为字典的键,你可以将列表转换为元组,因为元组是 不可变的 和 可哈希 的。通过这种方式,你可以将列表转换为元组,从而让它们可以作为字典的键。
你可以使用以下方法将列表转换为元组,使其可以作为字典的键:
# 原始列表 data = [([1, 2, 3, 4], 2), ([5, 6, 7], 3)] # 转换列表为元组 data = [(tuple(lst), num) for lst, num in data] # 使用转换后的元组列表作为字典的键 my_dict = {key: value for key, value in data} print(my_dict)
{(1, 2, 3, 4): 2, (5, 6, 7): 3}
tuple(lst)
lst
data
通过这种方式,你就能将包含列表的元组作为字典的键使用,而不会遇到哈希错误。