繁体   English   中英

如何在python中有效地比较两个集合列表?

[英]How to compare two list of sets effectively in python?

我有一个集合列表:

list = [{1,2}, {2,3}, {1,3}, {2,1} etc]

我需要一个列表,其中每个元素都出现一次。 创建一组列表失败,出现一个 set is not hashable 错误如果我创建另一个列表,并使用 if not in list 添加每个元素一次,然后追加列表有效,但现在我必须处理一个包含大约 600 000 个值对的列表,而且需要永远。 有没有更有效的方法?

引用您的评论; 正如您所提到的,这行得通,我会将我的评论作为正确答案发布。

set(map(tuple, list_))

输出:

{(1, 2), (1, 3), (2, 3)}

请注意:
我已将您的list变量命名为list_ ,因为它覆盖了内置变量。

这种方法似乎是线性缩放的。 1000 组列表的时间为 206 us,10000 为 2.19 ms。

您可以使用以下方法对集合列表执行联合:

l = [{1,2}, {2,3}, {1,3}, {2,1}]
set.union(*l)

输出:

{1, 2, 3}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM