set_edge_attributes#

set_edge_attributes(G, values, name=None)[源代码]#

从给定值或值字典设置边缘属性。

警告

参数的调用顺序 valuesname 在v1.x和v2.x之间切换。

参数
G网络X图表
values标量值,类似于字典

应将边属性设置为的值。如果 values 不是字典,则它将被视为单个属性值,然后应用于 G 。这意味着,如果您提供一个可变对象(如列表),则对该对象的更新将反映在每条边的edge属性中。属性名称将为 name

如果 values 是dict或dict的dict,它应该由edge tuple键控为属性值或用于更新边缘属性的属性键/值对的dict。对于多图,边元组的形式必须为 (u, v, key) 在哪里 uv 是节点和 key 是边缘键。对于非多重图,键必须是窗体的元组 (u, v) .

name字符串(可选,默认为无)

如果值是标量,则要设置的边属性的名称。

实例

在计算图形边缘的某些属性之后,您可能需要指定一个边缘属性来存储每个边缘的该属性的值:

>>> G = nx.path_graph(3)
>>> bb = nx.edge_betweenness_centrality(G, normalized=False)
>>> nx.set_edge_attributes(G, bb, "betweenness")
>>> G.edges[1, 2]["betweenness"]
2.0

如果将列表作为第二个参数提供,则对列表的更新将反映在每个边的“边”属性中::

>>> labels = []
>>> nx.set_edge_attributes(G, labels, "labels")
>>> labels.append("foo")
>>> G.edges[0, 1]["labels"]
['foo']
>>> G.edges[1, 2]["labels"]
['foo']

如果提供字典字典作为第二个参数,则整个字典将用于更新边缘属性:

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

请注意,如果词典包含不在 G ,它们将被默默忽略::

>>> G = nx.Graph([(0, 1)])
>>> nx.set_edge_attributes(G, {(1, 2): {"weight": 2.0}})
>>> (1, 2) in G.edges()
False