我正在寻找一种简单的方法来修改NetworkX图中单个节点的单个属性的值。
NetworkX文档仅提及为图形中所有节点设置属性的功能,例如:
nx.set_node_attributes(G, bb, 'betweenness')
在许多情况下,这样的属性很容易为图中的所有节点计算(如提到的介于两者之间),这可能是合适的。同样,有一种简单的方法可以访问NetworkX中的单节点属性:
graph.nodes[nodeName][attribute]
但是,以这种方式访问的属性是只读的。
所以我正在寻找一种设置属性的方法,就像读取一样简单。
谢谢。
答案 0 :(得分:0)
在您的示例中,bb
是一个字典,其键为节点。您不需要字典为图中的所有节点提供键,只需为要为其定义属性的节点都具有键。在下面的示例中,我创建一个图形,然后将节点'weight'
的{{1}}设置为0
,并将节点5
的{{1}}设置为3
。这使其他节点的属性不受影响,因此,由于从未创建过它们,因此它们不存在。
2
因此,我们为import networkx as nx
G = nx.fast_gnp_random_graph(10,0.2)
nx.set_node_attributes(G, {0:5, 3:2}, 'weight')
G.nodes[0]['weight']
> 5
G.nodes[3]['weight']
> 2
G.nodes[1]['weight']
> KeyError: 'weight'
和0
设置了权重,但没有其他权重。您也可以一次设置多个属性,但这需要稍有不同的调用。这里有
3
只需要看一下这些属性,就可以了:
nx.set_node_attributes(G, {1:{'weight':-1, 'volume':4}})
G.nodes[1]['weight']
> -1
G.nodes[1]['volume']
> 4