Python上でグラフを取り扱うモジュールであるNetworkx
のversionが1.11 -> 2.0に更新された際に、以前使用できた関数の幾つかが使えなくなっています。
現在、分かっているものを列挙していきます。
(旧) g.edge[i][j]['weight'] = 1 # i, jはノード (新) g[i][j]['weight'] = 1 g.adj[i][j]['weight'] = 1
version2.0からGraphのattributeからedge
が外されました。
代わりに例えば下の書き方で同様のことができます。
g[i]でノードiにつながるノードがkey、枝情報がvalueになった辞書を参照できます。
(旧)for i, attr in g.adjacency_iter(): pass (新) for i, attr in g.adj.items(): pass
(旧)for i, attr in g.nodes_iter(data=True): pass (新) for i, attr in g.nodes(data=True): pass
上と同様にadjacency_iter
, nodes_iter
という関数がなくなりました。
(旧) g.node[i] = attr (新) g.node[i].update(attr)
g.node[i]でノードiの情報が入った辞書が参照できますが、それをそのまま書き換えることができないようになりました。(object does not support item assignment
というエラーが)
辞書の連結(update
)を使えば結局同様のことができます。