添加edge属性会导致TypeError:' AtlasView'对象不支持项目分配

时间:2017-11-14 10:28:23

标签: networkx

使用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

我做错了什么?

1 个答案:

答案 0 :(得分:4)

如果您的图表是nx.MultiGraph,则会发生这种情况。从这种情况下,您需要从0n的额外索引,其中n是两个节点之间的边数。

尝试:

for source, target in g.edges():
    g[source][target][0]['yearmonth'] = yearmonth

教程示例适用于nx.Graph