Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить данные для границы между двумя узлами?

Автор вопроса: beckoОтветов: 1

Я хочу получить границу между двумя узлами в графе networkx. В частности, я хочу получить некоторые данные, связанные с этим краем. Я априори знаю, что эти два узла связаны. Есть ли функция для этого?

  • Что ты конкретно имеешь ввиду? Нарисовать ребро между двумя определенными узлами, которые, как вы знаете, связаны, или искать узлы, у которых есть ребро, а затем вычислять что-то на основе других атрибутов, которыми обладают эти узлы? Reti43 09.02.2016
  • @Reti43 Reti43 Я имею в виду, что если у вас есть два узла, u и v, получите ребро, которое их соединяет. becko 09.02.2016
  • Что-то вроде get_edge_data()? Также есть edges(), но он возвращает список подключенных узлов. Reti43 09.02.2016

pythonnetworkx

Ответы

Ответ 1 · рейтинг 15 · Joel

Данные края хранятся в словаре. Чтобы получить доступ к этому словарю, используйте get_edge_data().

import networkx as nx
G=nx.Graph()
G.add_edge(1,2, weight=5)
G.get_edge_data(1,2)
> {'weight': 5}

Если вы хотите перебрать все ребра, вы можете использовать G.edges(data=True)

H = nx.Graph()
H.add_edge(2, 3, color = 'red')
H.add_edge(1, 2, weight = 4)
for u,v,data in H.edges(data=True):
    print(u, v, data)
> 1 2 {'weight': 4}
> 2 3 {'color': 'red'}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы