我尝试使用
对自定义类的对象进行哈希处理hash()
功能。我的代码在类
中执行以下操作def __hash__(self):
return hash(tuple(self.somelistattribute))
属性somelistattribute是列表,例如:
为什么我一直收到错误:
TypeError: unhashable type: 'list'
我该如何解决?
答案 0 :(得分:3)
因为list
不可删除,并且包含子列表。要转换子列表,请使用map():
return hash(tuple(map(tuple, self.somelistattribute)))
答案 1 :(得分:0)
问题是外部列表中的列表。那些不可清除,并且调用tuple()
只会将外部列表更改为元组。
您可以通过几种方式解决此问题,例如使用map()
:
hash(tuple(map(tuple, list_of_lists)))
或理解:
hash(tuple(tuple(x) for x in list_of_lists))