如何合并networkx中的边缘属性?

时间:2019-07-08 22:23:47

标签: graph merge attributes networkx

我有两个用于构造图形的csv字符串。每个都有唯一的标签。我想将每个图的标记分配给所有边缘,然后合并图并合并属性。示例:

CSV1: a,b,c,d,e,123
CSV2: a,b,c,f,e,456

构建并合并图形后,edge:edge_attributes如下所示。两张图中的公共边仅保留一个标签:

('a', 'b') : {'tag': ['456']}
('b', 'c') : {'tag': ['456']}
('c', 'd') : {'tag': ['123']}
('c', 'f') : {'tag': ['456']}
('d', 'e') : {'tag': ['123']}
('f', 'e') : {'tag': ['456']}

我不知道如何合并标记属性,以使edge:edge_attributes看起来像这样。 ('a','b')和('b','c')节点应保留两个标签:

('a', 'b') : {'tag': ['123', '456']}
('b', 'c') : {'tag': ['123', '456']}
('c', 'd') : {'tag': ['123']}
('c', 'f') : {'tag': ['456']}
('d', 'e') : {'tag': ['123']}
('f', 'e') : {'tag': ['456']}

我有10万张图,每个图有1000个节点,所以这必须是一个高效的过程。

我目前正在像这样合并它们:

merged_graph = networkx.DiGraph()
for graph in my_list:
    merged_graph.add_edges_from(graph.edges(data=True))

0 个答案:

没有答案