Python 3 有向加权图到单一关系向量

Python 3 Directed Weighted Graph to Single Relationship Vectors

我是 python 3 的新手,为了进一步处理,我目前必须将存储为矩阵的有向加权图(例如 A->B 权重 20,B -> A 权重 10)转换为单一关系语句,如 [A,B,20] (node, node, weight).

矩阵如下所示:

matrix     A     B     C
A          0    10     0
B         20     0     5
C         10     5     0

我想要得到的结果如下:

[A, B, 10], [B, A, 20], [B, C, 5], [C, A, 10], [C, B, 5]

python 中是否有针对此问题的简单解决方案?也许有一些图书馆可以提供帮助。

数据位于 .csv 中,我会将它们读入我的程序。我能想到的解决方案是遍历每一行,然后将所有这些语句写在一些讨厌的嵌套中,然后一团糟。

谢谢, MX

只需为行创建一个循环,为列创建另一个循环:

 table = [[0  ,  10   ,  0],[20 ,    0  ,   5],[10  ,   5   ,  0]]

 r = []
 l = ['A','B','C']
 for i in range(len(['A','B','C'])):
     for j in range(len(['A','B','C'])):
         if i!=j:
             r.append([l[i],l[j],table[i][j]])
 print(r)

,结果是这样的:

 [['A', 'B', 10], ['A', 'C', 0], ['B', 'A', 20], ['B', 'C', 5], ['C', 'A', 10], ['C', 'B', 5]]

以 f 打开(文件名): reader = csv.DictReader(f, skipinitialspace=True) 名字 = reader.fieldnames 向量 = [] 对于 reader 中的行: fm = 行[姓名[0]] 对于名称[1:]: w = int(行[到]) 如果 w: vecs.append([fm, to, w])

打印(vecs)