DiGraph.add_weighted_edges_from#
- DiGraph.add_weighted_edges_from(ebunch_to_add, weight='weight', **attr)#
在
ebunch_to_add
中添加带指定权重属性的加权边- 参数:
- ebunch_to_add边的容器
列表或容器中给出的每条边都将添加到图中。边必须以三元组 (u, v, w) 的形式给出,其中 w 是一个数字。
- weight字符串,可选(默认值 = ‘weight’)
要添加的边权重的属性名称。
- attr关键字参数,可选(默认值 = 无属性)
要为所有边添加/更新的边属性。
另请参阅
add_edge
添加一条边
add_edges_from
添加多条边
注意
对于 Graph/DiGraph,两次添加同一条边只会更新边的属性。对于 MultiGraph/MultiDiGraph,会存储重复的边。
当你从正在更改的图的迭代器中添加边时,可能会引发
RuntimeError
,并伴随消息:RuntimeError: dictionary changed size during iteration
。这发生在图的底层字典在迭代期间被修改时。为了避免此错误,请将迭代器求值到一个单独的对象中,例如使用list(iterator_of_edges)
,然后将此对象传递给G.add_weighted_edges_from
。示例
>>> G = nx.Graph() # or DiGraph, MultiGraph, MultiDiGraph, etc >>> G.add_weighted_edges_from([(0, 1, 3.0), (1, 2, 7.5)])
在传递迭代器之前对其进行求值
>>> G = nx.Graph([(1, 2), (2, 3), (3, 4)]) >>> weight = 0.1 >>> # Grow graph by one new node, adding edges to all existing nodes. >>> # wrong way - will raise RuntimeError >>> # G.add_weighted_edges_from(((5, n, weight) for n in G.nodes)) >>> # correct way - note that there will be no self-edge for node 5 >>> G.add_weighted_edges_from(list((5, n, weight) for n in G.nodes))