python - 确定集合并集的有效方法

标签 python python-3.x set

我有一个(非常大的)集合列表,其中包含值对,例如:

SetList = [{1,2},{2,3},{4,5},{5,6},{1,7}]

我想有效地确定不相交的值集,如上面对中关系的传递性所暗示的那样。例如,1 与 2 关联,2 与 3 关联,因此 1,2,3 关联。同样,1 与 7 相关联,因此 1、2、3 和 7 是相关联的。在上面,4、5 和 6 相关联,但不与其余值相关联。结果应如下所示:

DisjointSets = [{1,2,3,7},{4,5,6}]

是否有简单、有效的方法来执行我缺少的此操作?谢谢!

最佳答案

将我的原始列表转换为元组:

TupleList = [(1,2),(2,3),(4,5),(5,6),(1,7)]

我通过以下方式使用了networkx(感谢@user2357112):

import networkx as nx
G = nx.path_graph(0)
G.add_edges_from(TupleList)
DisjointSets = list(nx.connected_components(G))

这是解决问题最有效的方法吗?还有其他想法吗?

关于python - 确定集合并集的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43987412/

相关文章:

python - Django 单元测试随机失败

python - 计算 xarray 数据集的平方根误差

python - pyqt QFileSystemModel rowCount

c++ - std::string 不适用于 std::set

python reduce 找到集合的并集

python - 使用递归 Python 计算项目在序列中出现的次数

Python 异常 :"TypeError: main() got an unexpected keyword argument ' debug'"但 IFF 模块是通过 Windows XP SP2 上的 scheduledTask 运行的

python - 将 numpy 数组转换为给定格式的字符串

python - 为什么我不能在 OSX 上的 pipenv 中安装 m2crypto?

Java将集合放入 map