set_node_attributes#

set_node_attributes(G, values, name=None)[source]#

设置节点的属性值,可以是单个值或字典形式的值。

Warning

在v1.x和v2.x版本中,参数 valuesname 的调用顺序发生了变化。

Parameters:
GNetworkX 图
values标量值, 类字典

节点属性应设置的值。如果 values 不是字典,则将其视为单个属性值,然后应用于 G 中的每个节点。这意味着如果你提供了一个可变对象,如列表,对该对象的更新将反映在每个节点的属性中。属性名将为 name

如果 values 是一个字典或字典的字典,它应该按节点键入,以属性值或属性键/值对的字典来更新节点的属性。

name字符串 (可选, 默认=None)

如果 values 是标量,要设置的节点属性名称。

Examples

在计算图节点的某些属性后,你可能希望分配一个节点属性来存储每个节点的该属性值:

>>> G = nx.path_graph(3)
>>> bb = nx.betweenness_centrality(G)
>>> isinstance(bb, dict)
True
>>> nx.set_node_attributes(G, bb, "betweenness")
>>> G.nodes[1]["betweenness"]
1.0

如果你提供一个列表作为第二个参数,对列表的更新将反映在每个节点的属性中:

>>> G = nx.path_graph(3)
>>> labels = []
>>> nx.set_node_attributes(G, labels, "labels")
>>> labels.append("foo")
>>> G.nodes[0]["labels"]
['foo']
>>> G.nodes[1]["labels"]
['foo']
>>> G.nodes[2]["labels"]
['foo']

如果你提供一个字典的字典作为第二个参数,外层字典被假定为按节点键入,内层字典为该节点的属性:

>>> G = nx.path_graph(3)
>>> attrs = {0: {"attr1": 20, "attr2": "nothing"}, 1: {"attr2": 3}}
>>> nx.set_node_attributes(G, attrs)
>>> G.nodes[0]["attr1"]
20
>>> G.nodes[0]["attr2"]
'nothing'
>>> G.nodes[1]["attr2"]
3
>>> G.nodes[2]
{}

请注意,如果字典包含 G 中不存在的节点,这些值将被静默忽略:

>>> G = nx.Graph()
>>> G.add_node(0)
>>> nx.set_node_attributes(G, {0: "red", 1: "blue"}, name="color")
>>> G.nodes[0]["color"]
'red'
>>> 1 in G.nodes
False