python中的一组非散列对象

2024-05-16 07:07:05 发布

您现在位置:Python中文网/ 问答频道 /正文

对于非散列对象,是否存在与pythonset等效的方法?(例如,可以相互比较但不能哈希的自定义类?)在


Tags: 对象方法pythonset
2条回答

如果您的值不可散列,那么使用set就没有。在

只需使用list。如果您的对象所能做的就是测试是否相等,那么您必须每次扫描每个元素来测试成员资格。obj in listvalue正是这样做的,扫描列表直到找到相等匹配:

if not someobj in somelist:
   somelist.append(someobj)

会给你一个“唯一”值的列表。在

是的,这将比集合慢,但是集合只能通过散列实现O(1)复杂度。在

如果您的对象是可排序的,那么您可以通过使用^{} module将测试降低到O(logn)复杂度来加快操作速度。确保使用从对分测试中收集到的信息插入新值以保持顺序。在

blist库中有一个sortedset class,它使用基于排序列表的存储机制,为可比较(而且可能是不可哈希的)对象提供了一个类似集合的api。在

相关问题 更多 >