使用networkx 2.0我尝试通过遍历所有边缘来动态添加额外的边缘属性。该图是MultiDiGraph。
根据tutorial,似乎可以像我在下面的代码中那样添加边缘属性:
g = nx.read_gpickle("../pickles/" + gname)
yearmonth = gname[:7]
g.name = yearmonth # works
for source, target in g.edges():
g[source][target]['yearmonth'] = yearmonth
此代码抛出以下错误:
TypeError: 'AtlasView' object does not support item assignment
我做错了什么?
答案 0 :(得分:4)
如果您的图表是nx.MultiGraph
,则会发生这种情况。从这种情况下,您需要从0
到n
的额外索引,其中n
是两个节点之间的边数。
尝试:
for source, target in g.edges():
g[source][target][0]['yearmonth'] = yearmonth
教程示例适用于nx.Graph
。