使用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
我做错了什么?
最佳答案
如果您的图表是 nx.MultiGraph
,则应该会发生这种情况。在这种情况下,您需要一个从 0
到 n
的额外索引,其中 n
是两个节点之间的边数。
尝试:
for source, target in g.edges():
g[source][target][0]['yearmonth'] = yearmonth
本教程示例适用于 nx.Graph
。
关于networkx - 添加边缘属性会导致 TypeError : 'AtlasView' object does not support item assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283340/