如何将NetworkX最短路径节点列表转换为距离值以计算平均值
实现方案
方案1:修改原始生成逻辑,一步生成距离字典(推荐)
直接用networkx内置的nx.shortest_path_length()方法替换原来的nx.shortest_path(),无需额外二次处理,性能更高:
selected_shortest_dist = { source: { target: nx.shortest_path_length(G, source, target) for target in list4path if nx.has_path(G, source, target) } for source in G.nodes() }
运行后直接得到你需要的距离格式字典。
方案2:对已有的路径字典做转换
如果已经生成了存储路径的字典,不想重复跑路径计算,可以直接遍历转换,路径的间隔数等于节点列表长度减1:
# 假设你已有的路径字典名为selected_shortest selected_shortest_dist = { source: { target: len(path) - 1 for target, path in target_dict.items() } for source, target_dict in selected_shortest.items() }
后续计算平均最短路径的示例代码
all_dist = [] for target_dict in selected_shortest_dist.values(): all_dist.extend(target_dict.values()) avg_dist = sum(all_dist) / len(all_dist)
内容的提问来源于stack exchange,提问作者V_sqrt
相关产品推荐
相关产品推荐

