我有以下节点列表。我想得到每个节点的经度和纬度。
('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 :(得分: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[][]
。
答案 1 :(得分:3)
迭代节点最紧凑的方法如下:
for i in G:
G.node[i]['longitude']