2015-09-06 5 views
1

У меня есть следующий список узлов. Я хочу получить долготу и широту каждого узла.Доступ к атрибутам узлов в цикле

('11', {'Internal': 1, 'Latitude': -31.93333, 'Country': u'Australia', 'id': 11, 'Longitude': 115.83333, 'label': u'Perth1'}) 
('10', {'Internal': 1, 'Latitude': -35.28346, 'Country': u'Australia', 'id': 10, 'Longitude': 149.12807, 'label': u'Canberra2'}) 
('13', {'Internal': 1, 'Latitude': -34.93333, 'Country': u'Australia', 'id': 13, 'Longitude': 138.6, 'label': u'Adelaide1'}) 
('12', {'Internal': 1, 'Latitude': -31.93333, 'Country': u'Australia', 'id': 12, 'Longitude': 115.83333, 'label': u'Perth2'}) 
('15', {'Internal': 1, 'Latitude': -37.814, 'Country': u'Australia', 'id': 15, 'Longitude': 144.96332, 'label': u'Melbourne1'}) 
('14', {'Internal': 1, 'Latitude': -34.93333, 'Country': u'Australia', 'id': 14, 'Longitude': 138.6, 'label': u'Adelaide2'}) 
('17', {'Internal': 1, 'Latitude': -23.7, 'Country': u'Australia', 'id': 17, 'Longitude': 133.88333, 'label': u'Alice Springs'}) 
('16', {'Internal': 1, 'Latitude': -37.814, 'Country': u'Australia', 'id': 16, 'Longitude': 144.96332, 'label': u'Melbourne2'}) 

Я знаю, как доступ к

G.nodes['11']['longitude'] 
G.nodes['10']['longitude'] 
G.nodes['13']['longitude']. 

Но я хочу гибкий доступ, который не означает, что нет необходимости изменять код, если число узлов увеличивается. Как я могу это сделать?

+0

формат ваших узлов в списке не совпадает с образом вы доступ к ним, вы можете исправить это? – fixmycode

ответ

3

Просто перебирайте узлы. «Лучший» способ перебора узлов с G.nodes_iter() (генератор), но попеременно можно использовать G.nodes() (список):

import networkx as nx 
G=nx.Graph() 
G.add_node('11', longitude = 3) 
for node in G.nodes_iter(): 
    print G.node[node]['longitude'] 
> 3 
G.add_node('3', longitude = 5) 
for node in G.nodes_iter(): 
    print G.node[node]['longitude'] 
>3 
>5 

Если вы заботитесь о порядке, что вы идете по списку, вы «Я хочу использовать G.nodes() и сортировать его соответствующим образом.


Примечание --- в вашем примере у вас было G.nodes[][]. Это не сработает. Он должен быть G.node[][].

3

Самый компактный способ перебора узлов заключается в следующем:

for i in G: 
    G.node[i]['longitude'] 
Смежные вопросы