networkx: доступ к узлам с несколькими атрибутами узлов через цикл - PullRequest
0 голосов
/ 28 января 2019

У меня есть график, который имеет узлы / ребра.Я назначил узлам некоторые атрибуты

 [(1, {'node_rx_signal': 0}),
 (2, {'node_rx_signal': 0}),
 (3, {'node_rx_signal': 1}),
 (4, {'node_rx_signal': 0}),
 (5, {'node_rx_signal': 1}),
 (6, {'node_rx_signal': 0}),
 (7, {'node_rx_signal': 0}),
 (8, {'node_rx_signal': 0})]

, например, это означает, что для некоторых узлов этот атрибут установлен на 0, а для других нет.С помощью цикла for с условием If я хочу выполнить задачу, но я не могу получить доступ к узлам с 'node_rx_signal' == 1.

nx.set_node_attributes(T1,values=0,name='node_rx_signal')
T1.nodes[3]['node_rx_signal'] = 1
T1.nodes[5]['node_rx_signal'] = 1  

for n, data in T1:
    if T1[n][data]==1:
        print(T1.node)
        print([n for n in T1.neighbors(n)])
    else:
        pass

Что-то в этом роде.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

так что на ваш вопрос уже есть ответ, я действительно подчеркиваю, что перед публикацией вы всегда должны искать в поиске Google! цикл по узлам и извлечение атрибутов в Networkx

, в вашем случае вызов цикла for для узла node () поможет, не забудет данные = True, если вы работаетес атрибутами:

for my_node in T1.nodes(data=True):
     if my_node["node_rx_signal"] == 1:
          print(my_node)
0 голосов
/ 28 января 2019

Что-то в этом духе:

import networkx as nx

T1 = nx.Graph()
for i in range(1, 9):
    T1.add_node(i)

nx.set_node_attributes(T1, values=0, name='node_rx_signal')
nx.set_node_attributes(T1, values=0, name='node_visited')

T1.nodes[3]['node_rx_signal'] = 1
T1.nodes[5]['node_rx_signal'] = 1
T1.nodes[6]['node_visited'] = 1

for node, attr in T1.nodes(data=True):
    if attr['node_rx_signal'] == 1:
        print(node)
    if attr['node_visited'] == 1:
        print(node)

Отпечатки:

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