例如,我的数据是一组冻结集
data = set([frozenset([1,2,3,4]), frozenset([3,4,5,6,7,8]), frozenset([100,200]), frozenset([1,1000, 2000])])
预期结果是具有重复元素的frozenset集,即
result = set([frozenset([1,2,3,4]), frozenset([3,4,5,6,7,8]), frozenset([1,1000, 2000])])
这里frozenset([100,200])
被删除,因为它不与其他冻结集共享任何元素。什么是实现这一目标的有效方法?你知道吗
您可以构建一个
dict
集合元素来计算它们被找到的次数,然后删除所有元素的计数为1的任何frozenset
。collections.Counter
会很方便。你知道吗它的优点是
O(n)
,其中n
是所有集合中元素的总数。你知道吗我会用这样的检查来做一个集合理解(对于每个项目,检查它是否有至少一个其他元素的公共元素):
结果:
可能有更有效的解决方案,但至少
disjoint
部分是由有效的set
例程处理的这是我的版本,它没有任何特别的优势,但你可能会发现它更可读。你知道吗
相关问题 更多 >
编程相关推荐