gpt4 book ai didi

python - Networkx:在 MultiDiGraph 上调用时,get_edge_data 返回意外结果

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:11 25 4
gpt4 key购买 nike

我正在使用 Python 的流行网络库 networkx。从以下代码中,我希望打印的语句是等效的。

import networkx as nx

graph = nx.Graph()
mgraph = nx.MultiDiGraph()

for G in [graph, mgraph]:
G.add_edge(1, 2, weight=4.7)

print(graph.get_edge_data(1, 2))
print(mgraph.get_edge_data(1,2))

但是我得到了以下内容:

{'weight': 4.7}
{0: {'weight': 4.7}}

为什么在多向图的情况下要添加额外的 0 键?对应什么?

最佳答案

MultiDiGraph 允许多条边。每条边可能有自己的属性。在您的示例中,它告诉您的是,在 Graph 的情况下,边(其中只能有一个)的权重为 4.7。但在 MultiDiGraph 的情况下,它告诉您索引为 0 的边(碰巧只有这条边)的权重为 4.7。

试试这个让我们再次添加边缘的地方更加清晰,但权重不同:

import networkx as nx

graph = nx.Graph()
mgraph = nx.MultiDiGraph()

for G in [graph, mgraph]:
G.add_edge(1, 2, weight=4.7)
G.add_edge(1, 2, weight = 5) #are we overwriting an edge, or adding an extra edge?

print(graph.get_edge_data(1, 2))
print(mgraph.get_edge_data(1,2))

给出输出

>{'weight': 5}
>{0: {'weight': 4.7}, 1: {'weight': 5}}

显示在 Graph 的情况下,边属性被覆盖(因为只有一条边),但在 MultiDiGraph 的情况下,第二条边添加了索引1

关于python - Networkx:在 MultiDiGraph 上调用时,get_edge_data 返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57927173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com