在Networkx 2.1+中修改单个节点属性的简单方法

时间:2018-11-27 21:55:47

标签: python-3.x graph networkx

我正在寻找一种简单的方法来修改NetworkX图中单个节点的单个属性的值。

NetworkX文档仅提及为图形中所有节点设置属性的功能,例如:

nx.set_node_attributes(G, bb, 'betweenness')

在许多情况下,这样的属性很容易为图中的所有节点计算(如提到的介于两者之间),这可能是合适的。同样,有一种简单的方法可以访问NetworkX中的单节点属性:

graph.nodes[nodeName][attribute]

但是,以这种方式访问​​的属性是只读的。

所以我正在寻找一种设置属性的方法,就像读取一样简单。

谢谢。

1 个答案:

答案 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