在课堂上哈希

时间:2016-03-25 19:15:08

标签: python class object hash set

我尝试使用

对自定义类的对象进行哈希处理
hash()

功能。我的代码在类

中执行以下操作
def __hash__(self):
    return hash(tuple(self.somelistattribute))

属性somelistattribute是列表,例如:

为什么我一直收到错误:

TypeError: unhashable type: 'list'

我该如何解决?

2 个答案:

答案 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))