2016-03-17 39 views
0

我是新來的python 3和進一步處理我目前必須轉換一個有向加權圖(例如A-> B權重20,B - >權重10)存儲爲像[A,B,20](節點,節點,權重)這樣的矩陣到單個關係語句。Python 3直接加權圖到單一關係向量

矩陣如下所示:

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] 

是否有蟒蛇一個簡單的解決呢?也許有些圖書館可以提供幫助。

數據位於.csv中,我會將它們讀入我的程序中。我所能想到的一個解決方案就是遍歷每一行,並將所有這些語句寫入一些令人討厭的嵌套時間和混亂。

THX, MX

回答

0

剛剛創建行的列的循環和另:

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]] 
0

與開放(文件名)爲f : reader = csv.DictReader(f,skipinitialspace = True) names = reader.fieldnames vecs = [] 爲行中的讀取器: FM =行[名稱[0]] 用於向在名稱[1:]: W = INT(行[到]) 當w: vecs.append([FM,於w])

print(vecs)