networkx - 添加边缘属性会导致 TypeError : 'AtlasView' object does not support item assignment

标签 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

我做错了什么?

最佳答案

如果您的图表是 nx.MultiGraph,则应该会发生这种情况。在这种情况下,您需要一个从 0n 的额外索引,其中 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/

相关文章:

python-3.x - NetworkX - 允许重复节点

python - 查找 networkx 图是否在 python 中可追踪

python - 如何使用 networkx 库为启用对角线的 A* 算法创建 8 单元邻接图

python - 来自networkx的g.nodes()不能与random.choice()一起使用

python - 网页上的大图可视化 : networkx, vivagraph

python - 如何在 igraph 中运行 Louvain 社区检测算法?

python - 如何在 Pandas 中进行分组

python - 如何从 tsv 文件中找到所有节点三元组(大小为 3 的连通分量)?

networkx - Networkx 加权图中的中心性