Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
简单代码:
>>> set([2,2,1,2,2,2,3,3,5,1]) set([1, 2, 3, 5])
好的,在结果集中没有重复项。如果列表中的对象不是 int 而是我定义的对象怎么办?它检查什么方法来了解它们是否不同?我用一些对象实现了 __eq__ 和 __cmp__ 但set似乎没有使用它们:\
有谁知道如何解决这个问题?
根据集合文档,元素必须是可散列的。
如果一个对象的哈希值在其生命周期内永远不会改变(它需要一个__hash__()方法),并且可以与其他对象进行比较(它需要一个__eq__()or__cmp__()方法),那么它就是可哈希的。比较相等的可散列对象必须具有相同的散列值。
__hash__()
__eq__()
__cmp__()
编辑:感谢罗伯托添加了正确的 Hashable 定义