Изменение атрибутов ребер в мультиграфе networkx - PullRequest
8 голосов
/ 27 февраля 2012

В мультиграфе каждый вызов * add_edge (a, b, weight = 1) * добавляет новое ребро между узлами a и b .При построении графика можно изменить этот вес, когда снова найдены a и b .Прямо сейчас я проверяю, подключены ли (a, b) или (b, a), затем должен удалить край и добавить новый.Мне кажется, что я просто должен быть в состоянии обновить вес.

Примечание: мне нужны мультиграфы, потому что я использую разные типы ребер между узлами (дифференцируются с помощью key )

1 Ответ

13 голосов
/ 27 февраля 2012

Документация Multigraph.add_edge указывает, что вы должны использовать аргумент key для уникальной идентификации ребер в мультиграфе.Вот пример:

>>> import networkx as nx
>>> G = nx.MultiGraph()
>>> G.add_edge(1, 2, key='xyz', weight=2)
>>> G.add_edge(1, 2, key='abc', weight=1)
>>> G.edges(data=True)
[(1, 2, {'weight': 2}), (1, 2, {'weight': 1})]

Теперь, чтобы обновить ребро с ключом xyz, просто передайте этот параметр еще раз:

>>> G.add_edge(1, 2, key='xyz', weight=7)
>>> G.edges(data=True)
[(1, 2, {'weight': 7}), (1, 2, {'weight': 1})]

Чтобы прочитать предыдущее значение, вы можете использовать get_edge_data как это:

>>> G.get_edge_data(1, 2, key='xyz')
{'weight': 7}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...