函数集用于检查两个对象是否不同?

时间:2008-12-08 23:02:24

标签: python methods set

简单代码:

>>> set([2,2,1,2,2,2,3,3,5,1])
set([1, 2, 3, 5])

好的,在结果集中没有重复项。 如果列表中的对象不是int而是由我定义的,该怎么办? 它检查了什么方法来理解它们是否不同?我用一些对象实现了__eq__和__cmp__,但 set 似乎没有使用它们:\

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:13)

根据set documentation,元素必须为hashable

如果对象具有在其生命周期内永远不会更改的哈希值(它需要__hash__()方法),并且可以与其他对象进行比较(它需要__eq__()或{{ 1}}方法)。比较相等的Hashable对象必须具有相同的哈希值。

编辑:感谢Roberto

添加了正确的Hashable定义