是否有一个类似于Python set
的等价物,用于非哈希对象?(例如可以相互比较但无法哈希的自定义类?)
set
没有意义。请改用list
。如果您的所有对象只能测试相等性,则每次测试成员资格都必须扫描每个元素。obj in listvalue
就是这样,扫描列表直到找到相等匹配为止:if not someobj in somelist:
somelist.append(someobj)
bisect
模块来加速操作,将测试降低到O(log N)复杂度。确保您使用从二分测试中获取的信息插入新值以保留顺序。set()
,那么使用它是没有意义的,因为它不起作用。你的答案使用list
实现了set
API,这是正确的方法,但应该具有类似的接口。 - Elazar
__hash__
方法。 - perreal