python - NetworkX - 保持边缘秩序

标签 python networkx

我有一个二分图 B,如下所示:

B.add_nodes_from([1, 2, 3, 4], bipartite=0)
B.add_nodes_from([5, 6, 7, 8], bipartite=1)
B.add_edges_from([(1, 8), (1, 7), (1, 6), (1,5), (2,8), (2,7), (2,6), (3,8), (3,7), (4,8)])

我希望在使用 B.edges() 时边缘的顺序保持不变。相反,它们被打乱了:

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

顺序不一定是升序或降序。我只是希望它按照我使用 B.add_edges_from(...) 添加它们的顺序。因此,在这种情况下使用 sorted 不起作用。

最佳答案

字典是用于 NetworkX 图的底层数据结构,从 Python 3.7+ 开始,它们维护插入顺序。这意味着每次运行 Graph.edges() 时我们都会获得相同的结果。

对于较旧的 python,您可以使用 Networkx 的 Ordered Graphs ,这将为节点和边的报告提供一致的顺序

g = nx.OrderedGraph()
g.add_nodes_from([1, 2, 3, 4], bipartite=0)
g.add_nodes_from([5, 6, 7, 8], bipartite=1)
g.add_edges_from([(1, 8), (1, 7), (1, 6), (1,5), 
                  (2,8), (2,7), (2,6), (3,8), (3,7), (4,8)])

print(g.edges())
# EdgeView([(1, 8), (1, 7), (1, 6), (1, 5), (2, 8), (2, 7), (2, 6), (3, 8), (3, 7)...

关于python - NetworkX - 保持边缘秩序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55008604/

相关文章:

python - 如何更好地可视化给定文本的单词关联?

python - 在 Stata/python 中合并相似的行

python - 数组上的广播掩码操作

python - 仅模拟副作用 X 次

python - 我如何将加载/保存功能合并到我用 python 编写的游戏中

python - 如何在Python中根据平均度数过滤scipy稀疏矩阵节点?

python - 有向图并行排序

python - 如何估计 NetworkX 图形内存使用情况?

python - 无法通过 Python API 更改我的 Picasa 网络相册相册的日期

python - 具有不同哈希和排序键的有序元组集