简单代码:
>>> set([2,2,1,2,2,2,3,3,5,1])
set([1, 2, 3, 5])
好的,在结果集中没有重复项。 如果列表中的对象不是int而是由我定义的,该怎么办? 它检查了什么方法来理解它们是否不同?我用一些对象实现了__eq__和__cmp__,但 set 似乎没有使用它们:\
有谁知道如何解决这个问题?
答案 0 :(得分:13)
根据set documentation,元素必须为hashable。
如果对象具有在其生命周期内永远不会更改的哈希值(它需要__hash__()
方法),并且可以与其他对象进行比较(它需要__eq__()
或{{ 1}}方法)。比较相等的Hashable对象必须具有相同的哈希值。
编辑:感谢Roberto
添加了正确的Hashable定义