You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为NetworkX中批量添加的边设置不同权重?

为NetworkX图的每条边设置不同权重的解决方案

你可以通过两种实用方式实现为每条边指定不同权重的需求:

方法一:添加边时直接指定权重

add_edges_from方法支持传入包含权重属性的元组,格式为(源节点, 目标节点, {'weight': 权重值}),在添加边的同时就能完成权重设置。示例代码如下:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()

# Set 1:添加边时指定不同权重
G.add_edges_from([
    ('A','B', {'weight': 0.1}),
    ('A','C', {'weight': 0.2}),
    ('C','B', {'weight': 0.3})
])
# Set 2
G.add_edges_from([
    ('D','A', {'weight': 0.4}),
    ('D','B', {'weight': 0.5}),
    ('D','C', {'weight': 0.6})
])
# Set 3
G.add_edges_from([
    ('E','D', {'weight': 0.7}),
    ('E','B', {'weight': 0.8}),
    ('E','C', {'weight': 0.9})
])

# 验证权重是否设置成功
print(G.edges(data=True))

pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_size=500, node_color='green')
nx.draw_networkx_edges(G, pos, edgelist=G.edges())
plt.show()

方法二:批量更新已添加边的权重

如果已经完成边的添加,可通过定义边-权重映射字典,批量为每条边赋值权重:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()

# 先添加所有边
G.add_edges_from([('A','B'),('A','C'),('C','B')])
G.add_edges_from([('D','A'),('D','B'),('D','C')])
G.add_edges_from([('E','D'),('E','B'),('E','C')])

# 定义每条边的权重字典
edge_weights = {
    ('A','B'): 0.1,
    ('A','C'): 0.2,
    ('C','B'): 0.3,
    ('D','A'): 0.4,
    ('D','B'): 0.5,
    ('D','C'): 0.6,
    ('E','D'): 0.7,
    ('E','B'): 0.8,
    ('E','C'): 0.9
}

# 批量更新权重
for edge, weight in edge_weights.items():
    G.edges[edge]['weight'] = weight

# 验证权重
print(G.edges(data=True))

pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_size=500, node_color='green')
nx.draw_networkx_edges(G, pos, edgelist=G.edges())
plt.show()

两种方法都能满足为每条边设置不同权重的需求,可根据实际场景选择使用。

内容的提问来源于stack exchange,提问作者PKrange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:55:35