在Python中快速将有向图转换为无向图(邻接表)的方法?
我正在尝试把一组弧线转换成一组边,用于一些简单的可视化工作。
我现在的弧线数据看起来是这样的:
(
['A','B',2],
['B','A',3],
['A','C',4],
['B','C',2],
)
我需要把它转换成边,这样方向就能合并,看起来像这样:
(
['A','B',5],
['A','C',4],
['B','C',2],
)
我在想应该有一种很“Python风格”的方法来做到这一点,但不太确定最优雅的方式是什么。
1 个回答
6
这里有一种方法,使用字典来存储数据,字典的键是按顺序排列的弧的端点:
import collections
d = collections.defaultdict(int)
for n1, n2, v in arcdata:
d[min(n1, n2), max(n1, n2)] += v
result = [[k[0], k[1], v] for k, v in d.iteritems()]