2015-09-06 143 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'] 
相关问题