Networkx 将图形转换为保留边缘数据的树

Networkx convert graph to tree preserving edge data

我有一个包含边数据(字典)的无向图 G。我可以用 G.edges.data().

查看它的数据

我可以使用 networkx.dfs_tree(G) 将我的图形转换为树,问题是边缘数据丢失了。

是否可以在保留数据的情况下进行此转换?

刚刚发现自己。

创建一个保留数据(重复边)的无向图。然后获取其边缘数据属性创建字典。将其与 nx.set_edge_attributes 一起使用。根据 networkx 文档忽略不存在的边缘。

import networkx as nx 

Gd = nx.DiGraph(G) 
data = { (u, v) : d for u, v, d in Gd.edges.data() }  # create a dict of { edge : data ...}
Gdt = nx.dfs_tree(Gd) # create tree
nx.set_edge_attributes(Gdt, data) # set all tree edge data at once