gpt4 book ai didi

python - 向 MultiDiGraph 边添加权重

转载 作者:行者123 更新时间:2023-11-28 17:40:40 25 4
gpt4 key购买 nike

我有一个多图,其中的边没有权重。我想增加一些权重

G=MultiDiGraph():

……

  for u, v, data in G.edges_iter(data=True):
G.edge[u][v]['weight'] = None

我得到以下边缘:

('08B', '09B', {}),
('08B', '09B', {}),
('08B', '09B', {}),
('08B', '09B', 1),
('03P', '05T', {}),
('03P', '05T', 1)]

也就是说,它只在一个实例中增加权重。如何为所有边增加权重?

最佳答案

您遇到的问题是您在多图中使用附加字典访问边的属性。特别是,每条边都有一个副本的字典,因此您可以按如下方式访问给定边的属性:

G.edge[u][v][replicate][attr] = val

因此,如果您想更新一对 (u, v) 节点之间的 all 属性,您可以定义如下函数:

def set_multi_edge_attr(u, v, attr, val):
for repl in G.edge[u][v].keys():
G.edge[u][v][repl][attr] = val

其中 repl 表示单个边的副本。这是一个简单的例子:

>>> import networkx as nx
>>> G = nx.MultiDiGraph()
>>> G.add_edges_from([(0, 1), (0, 1), (0, 1)])
>>> G.edges(data=True)
[(0, 1, {}), (0, 1, {}), (0, 1, {})]
>>> set_multi_edge_attr(0, 1, 'weight', 1)
>>> G.edges(data=True)
[(0, 1, {'weight': 1}), (0, 1, {'weight': 1}), (0, 1, {'weight': 1})]

关于python - 向 MultiDiGraph 边添加权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com