python中的一组不可清除的对象

Tza*_*ach 4 python

set对于不可散列的对象,是否有等效的python ?(例如,可以相互比较但不进行哈希处理的自定义类?)

Mar*_*ers 6

如果您的值不可清,那么使用就没有意义set.

只需使用一个list.如果所有对象所能做的就是测试平等,那么你就必须扫描每个元素每次测试会员资格.obj in listvalue就是这样,扫描列表,直到找到相等匹配:

if not someobj in somelist:
   somelist.append(someobj)
Run Code Online (Sandbox Code Playgroud)

会给你一个'独特'值列表.

是的,这将比一个集慢,但集合只能通过哈希实现O(1)复杂度.

如果您的对象是可订购的,则可以使用该bisect模块将测试降低到O(log N)复杂度,从而加快操作速度.确保使用从二分测试中收集的信息插入新值以保留订单.