2017-05-05 70 views
1

下面是代碼:nx.get_node_attributes在networkx返回一個空的字典

import networkx as nx 
G=nx.Graph() 
G.add_nodes_from([0,1,2,3,4,5]) 
G[0]['color']="red" 
G[1]['color']="yellow" 
G[2]['color']="red" 
G[3]['color']="green" 
G[4]['color']="green" 
G[5]['color']="yellow" 
print(nx.get_node_attributes(G,'color')) 

奇怪,因爲它是,我得到一個空的字典。有誰知道它的原因?或者還有其他可行的方法嗎? 有關類似問題的參考鏈接:Networkx: how get attribute color from the graph

我知道以下是使用get_node_attributes方法的正確方法,但這是使用它的唯一方法嗎?

>>> G=nx.Graph() 
>>> G.add_nodes_from([1,2,3],color='red') 
>>> color=nx.get_node_attributes(G,'color') 
>>> color[1] 
+1

[存儲和訪問節點屬性python networkx]可能的重複(http://stackoverflow.com/questions/13698352/storing-and-accessing-node-attributes-python-networkx) – Joel

回答

2

這是documentation for adding attributes to nodes

節點屬性

添加節點屬性使用add_node()add_nodes_from()G.node

>>> G.add_node(1, time='5pm') 
>>> G.add_nodes_from([3], time='2pm') 
>>> G.node[1] 
{'time': '5pm'} 
>>> G.node[1]['room'] = 714 
>>> G.nodes(data=True) 
[(1, {'room': 714, 'time': '5pm'}), (3, {'time': '2pm'})] 

這不是一個bug;你只是沒有正確設置屬性。

+0

值得添加提及'nx。 set_node_attributes',它允許您在定義節點後設置屬性。 – Joel