NetworkX отказывается обновлять атрибуты графа в цикле for? - PullRequest
0 голосов
/ 25 октября 2019

В настоящее время я использую версию NetworkX, предварительно установленную с Spyder 3.3.6 (NetworkX 2.3), и когда я добавляю атрибуты к узлу внутри цикла 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, чтобы отложить добавление атрибутов до конца,Что я могу сделать, чтобы это исправить?

1 Ответ

1 голос
/ 25 октября 2019

wordgraph[newid] - это не словарь атрибутов newid. Это коллекция соседей newid.

Вместо этого выведите wordgraph.node[newid].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...