在多重图中,每次调用 *add_edge(a,b,weight=1)* 都会在节点a和b之间添加一条新边。在构建图形时,是否可以在再次找到a和b时修改此权重。现在我检查一下(a,b)或(b,a)是否连接,然后必须删除边缘,并添加一个新边缘。在我看来,我应该能够简单地更新重量。
注意:我确实需要多重图,因为我在节点之间使用不同类型的边(使用key区分)
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}