2012-11-29 93 views
0

按標識符計算每列中的值。請看例子。 (我很難解釋:()python中的總和列表值

像這樣:

tdata = [ 
    ('column 1', [ 
     (1, 5), (2, 10), (3, 200) 
     ] 
    ), 
    ('column 2', [ 
     (1, 20), (2, 300), (3, 100) 
     ] 
    ), 
    ('column 3', [ 
     (1, 2), (2, 300), (3, 2000) 
     ] 
    ) 
] 

從這個數據集,我需要找到一種pythonic的方法來計算只有一個元組的子值,其中的第一個值內元組相匹配。

因此,我會做Col1中= 5 + 20 + 2,Col2中= 10 + 300 + 300,COL3 = 200 + 100 + 2000。

我可以在完成這一個真正編碼密集方式像這樣:

col1 = [] 
col2 = [] 
col3 = [] 
data = [] 
for (column_name, column_values) in tdata: 
    for (key, value) in column_values: 
     if key == 1: 
      col1.append(value) 
     elif key == 2: 
      col2.append(value) 
     elif key == 3: 
      col3.append(value) 

data = [('Column 1', sum(col1)), ('Column 2', sum(col2)), ('Column 3', sum(col3))] 

顯然這是很多代碼,而不是最有效的方法。任何有識之士將不勝感激。

回答

0

這裏有一個辦法:

rows = [x[1] for x in tdata] 
col1 = sum([x[0][1] for x in rows]) 
col2 = sum([x[1][1] for x in rows]) 
col3 = sum([x[2][1] for x in rows])