Skip to main content
 首页 » 编程设计

python之访问循环中节点的属性

2025年05月04日15webabcd

我有以下节点列表。我想获取每个节点的经度和纬度。

('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']. 

但我想要灵活的访问,这意味着如果节点数量增加,则无需更改代码。我该怎么做?

请您参考如下方法:

只需遍历节点。遍历节点的“最佳”方法是使用 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[][]。