如何将各种权重的批次分配给现有边缘(在Networkx中)?

时间:2016-04-12 06:19:58

标签: python graph networkx

我使用Networkx实现图表并遇到以下问题: 最初我有一组没有权重的边(尚未创建)和从其他数据计算的相应权重:

import networkx as nx
G = nx.Graph()
edges = [(1,3), (1,4), (3,4), (3,2), (2,5)]
weights = [2.5, 3.5, 2, 5, 4.5]

我希望将边缘权重组合成以下风格

edges_with_weights = [(1,3,2.5), (1,4,3.5), (3,4,2), (3,2,5), (2,5,4.5)]

使用

创建加权边
G.add_weighted_edges_from (edges_with_weights)

我编写了以下代码,但它报告:" TypeError:只能将元组(不是" int")连接到元组"

edges_with_weights = [x + y for x, y in zip (edges,weights)] #TypeError

那么我应该如何修改它以获得所需的风格?谢谢你们!

1 个答案:

答案 0 :(得分:1)

你只能连接两个元组,所以第二个列表的元素也必须是元组。您可以在列表理解中包含它:

>> [x + (y,) for x, y in zip (edges,weights)]
[(1, 3, 2.5), (1, 4, 3.5), (3, 4, 2), (3, 2, 5), (2, 5, 4.5)]