8

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

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

4

1 回答 1

14

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}
于 2012-02-27T17:53:34.893 回答