我使用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
那么我应该如何修改它以获得所需的风格?谢谢你们!
答案 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)]