Python 更改networkx多重图中的边属性

Python 更改networkx多重图中的边属性,python,networkx,Python,Networkx,在多重图中,每次调用*add_edge(a,b,weight=1)*都会在节点a和b之间添加一条新边。在构建图表时,是否可以在再次找到a和b时修改此权重。现在我检查(a,b)或(b,a)是否连接,然后必须删除边,并添加新边。在我看来,我应该能够简单地更新重量 注意:我确实需要多重图,因为我在节点之间使用不同类型的边(使用键区分)文档指出,您应该使用key参数来唯一标识多重图中的边。下面是一个例子: >>> import networkx as nx >>> G

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

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

文档指出,您应该使用
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})]
要读取上一个值,可以如下使用:

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

谢谢如何检索与关键点对应的边?例如,要知道以前的重量值。我必须先在所有边上循环检查钥匙吗?对不起,有没有办法画多重图形?我试过这样做:但两个节点之间只有一个连接是Draw,您应该把它作为一个问题来问。这篇评论离题了thread@E6aTb_E6aTb,jterrace是正确的,但无论如何,请参见和。