代码之家  ›  专栏  ›  技术社区  ›  mattiasostmar

添加边缘属性会导致TypeError:“AtlasView”对象不支持项分配

  •  2
  • mattiasostmar  · 技术社区  · 8 年前

    使用networkx 2.0,我尝试通过循环所有边来动态添加额外的边属性。该图是一个多有向图。

    根据 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 回复  |  直到 8 年前
        1
  •  8
  •   rodgdor    8 年前

    如果你的图是一个 nx.MultiGraph . 在这种情况下,您需要从 0 n 哪里 n 是两个节点之间的边数。

    尝试:

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

    本教程示例用于 nx.Graph .