python - 更改 networkx 多图中的边属性

标签 python networkx

在多重图中,每次调用 *add_edge(a,b,weight=1)* 都会在节点 ab 之间添加一条新边。构建图时,是否可以在再次找到ab 时修改此权重。现在我要检查 (a, b) 或 (b, a) 是否连接,然后必须删除边缘,并添加一个新边缘。在我看来,我应该能够简单地更新权重。

注意:我确实需要多图,因为我在节点之间使用不同类型的边(使用区分)

最佳答案

Multigraph.add_edge文档表明您应该使用 key 参数来唯一标识多图中的边。这是一个例子:

>>> import networkx as nx
>>> G = nx.MultiGraph()
>>> G.add_edge(1, 2, key='xyz', weight=2)
>>> G.add_edge(1, 2, key='abc', weight=1)
>>> G.edges(data=True)
[(1, 2, {'weight': 2}), (1, 2, {'weight': 1})]

现在,要更新由 xyz 键控的边,只需再次传递该参数即可:

>>> G.add_edge(1, 2, key='xyz', weight=7)
>>> G.edges(data=True)
[(1, 2, {'weight': 7}), (1, 2, {'weight': 1})]

要读取之前的值,可以使用get_edge_data像这样:

>>> G.get_edge_data(1, 2, key='xyz')
{'weight': 7}

关于python - 更改 networkx 多图中的边属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469515/

相关文章:

python - 如何加速找到两篇维基百科文章之间最短路径的程序

python - 为什么我的代码无法绘制有向图的箭头?

python - Matplotlib + NetworkX - 在单个图形中绘制 2 个网络

python - 为什么在绘制图形边缘时 nx.draw_networkx_edges 不连接节点?

python - Pandas 在多个大型数据帧中找到共同的 NA 记录

python - 从 URL 字符串中解析站点/域名

python - 8 或 9 个字母的回文错误

python - 有没有办法使用 Pycuda 检索特定值的索引?

python - 使用pivot_table时同时对aggfunc应用两个numpy函数

python-3.x - 如何从 Networkx 最短路径算法接收完整路径