2015-09-06 104 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'] 
相關問題