使用" set_edge_attributes"时会出错

时间:2016-03-06 00:11:10

标签: python networkx

当我尝试在networkx中使用set_edge_attributes为所有edeges的新属性分配一个整数值时(已经有一个无向网络x G):

 nx.set_edge_attributes(G, 'new_attr', 1)

错误显示

  

AttributeError:' int'对象没有属性'项目'

但是从https://networkx.github.io/documentation/latest/reference/generated/networkx.classes.function.set_edge_attributes.html开始:

  

如果值不是字典,则将其视为单个属性值,然后将其应用于G中的每个边。

那么为图中的每个边设置相同的整数值应该可以吗?或者我无法创造'一个新属性,必须使用现有属性吗?

更新: 似乎我可以使用

 G.edge[u][v]['new_attr'] 

创建和访问属性。但是有没有一种更简单的方法可以在不使用循环的情况下一次分配值?我需要使用相同的属性初始值初始化网络。

1 个答案:

答案 0 :(得分:0)

这是正确的想法。例如

In [1]: import networkx as nx

In [2]: G = nx.path_graph(4)

In [3]: nx.set_edge_attributes(G,'foo',1)

In [4]: list(G.edges(data=True))
Out[4]: [(0, 1, {'foo': 1}), (1, 2, {'foo': 1}), (2, 3, {'foo': 1})]

也许您的图表G已损坏?如果您需要更多帮助,请发布完整的示例。