繁体   English   中英

更改networkx多图中的边缘属性

[英]Changing edge attributes in networkx multigraph

在多图中,每次调用* 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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM