NetworkX 拒绝更新 for 循环中的图形属性?
NetworkX refuses to update graph attributes in for loop?
我目前使用的是预装了 Spyder 3.3.6 (NetworkX 2.3) 的 NetworkX 版本,当我在 for 循环中向节点添加属性时,更改不会反映出来,直到我退出循环.
这是我的代码的摘录:
wordgraph = nx.DiGraph()
for i in range(len(lines)):
for j in range(len(curline)):
...
wordgraph.add_node(newid, name=cur, attribute=wordstat)
print("contents of newly added", newid, ":", wordgraph[newid])
...
print(nx.get_node_attributes(wordgraph, 'attribute'))
第一次打印输出如下:
contents of newly added 34 : {}
而第二个打印输出一个填充的字典,如
{-1: 'start', 9999: 'end', 2: None, 3: 'r', 4: 'n', 5: 'n', 6: 'n', 7: 'a', 8: None, 9: 'n', 10: None, 11: 'n', 12: None, 13: None, 14: 'n', 15: 'n', 16: 'a', 17: None, 18: 'n', 19: None, 20: 'n', 21: 'n', 22: 'a', 23: None, 24: 'n', 25: None, 26: None, 27: 'a', 28: 'n', 29: None, 30: 'n', 31: 'n', 32: 'n', 33: 'a', 34: 'r', 35: None, 36: 'n'}
我需要在创建每个节点时立即更新节点属性,但我不知道我做错了什么让 NetworkX 推迟添加属性直到最后。我该怎么做才能解决这个问题?
wordgraph[newid]
不是 newid
的属性字典。它是 newid
.
的邻居集合
改为打印 wordgraph.node[newid]
.
我目前使用的是预装了 Spyder 3.3.6 (NetworkX 2.3) 的 NetworkX 版本,当我在 for 循环中向节点添加属性时,更改不会反映出来,直到我退出循环. 这是我的代码的摘录:
wordgraph = nx.DiGraph()
for i in range(len(lines)):
for j in range(len(curline)):
...
wordgraph.add_node(newid, name=cur, attribute=wordstat)
print("contents of newly added", newid, ":", wordgraph[newid])
...
print(nx.get_node_attributes(wordgraph, 'attribute'))
第一次打印输出如下:
contents of newly added 34 : {}
而第二个打印输出一个填充的字典,如
{-1: 'start', 9999: 'end', 2: None, 3: 'r', 4: 'n', 5: 'n', 6: 'n', 7: 'a', 8: None, 9: 'n', 10: None, 11: 'n', 12: None, 13: None, 14: 'n', 15: 'n', 16: 'a', 17: None, 18: 'n', 19: None, 20: 'n', 21: 'n', 22: 'a', 23: None, 24: 'n', 25: None, 26: None, 27: 'a', 28: 'n', 29: None, 30: 'n', 31: 'n', 32: 'n', 33: 'a', 34: 'r', 35: None, 36: 'n'}
我需要在创建每个节点时立即更新节点属性,但我不知道我做错了什么让 NetworkX 推迟添加属性直到最后。我该怎么做才能解决这个问题?
wordgraph[newid]
不是 newid
的属性字典。它是 newid
.
改为打印 wordgraph.node[newid]
.