如何在 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 错误
如果我创建另一个列表,并添加每个元素一次,如果不在列表中,则追加列表有效,
但现在我必须处理一个包含大约 600 000 个值对的列表,这需要很长时间。
有没有更有效的方法?
您可以使用以下方法对集合列表执行并集:
l = [{1,2}, {2,3}, {1,3}, {2,1}]
set.union(*l)
输出:
{1, 2, 3}
引用了您的评论;正如您提到的那样有效,我将 post 我的评论作为正确答案。
set(map(tuple, list_))
输出:
{(1, 2), (1, 3), (2, 3)}
请注意:
我已经将你的 list
变量命名为 list_
,因为它覆盖了内置变量。
此方法似乎可以线性扩展。 1000 组列表的时间为 206 us,10000 组为 2.19 ms。
我有一个集合列表:
list = [{1,2}, {2,3}, {1,3}, {2,1} etc]
我需要一个每个元素只出现一次的列表。 创建一组列表失败并出现 set is not hashable 错误 如果我创建另一个列表,并添加每个元素一次,如果不在列表中,则追加列表有效, 但现在我必须处理一个包含大约 600 000 个值对的列表,这需要很长时间。 有没有更有效的方法?
您可以使用以下方法对集合列表执行并集:
l = [{1,2}, {2,3}, {1,3}, {2,1}]
set.union(*l)
输出:
{1, 2, 3}
引用了您的评论;正如您提到的那样有效,我将 post 我的评论作为正确答案。
set(map(tuple, list_))
输出:
{(1, 2), (1, 3), (2, 3)}
请注意:
我已经将你的 list
变量命名为 list_
,因为它覆盖了内置变量。
此方法似乎可以线性扩展。 1000 组列表的时间为 206 us,10000 组为 2.19 ms。