2017-10-04 80 views
-4

值的總和只有我有以下列表返回基於一個關鍵條件

a = [(1:0.4), (6:0.15), (6:0.15), (7:0.1)] 

而只想返回其中關鍵等於一定值的值的總和。例如。鍵等於6的值的總和將是0.3。我認爲下面會工作:

= sum(values for key, values in a.items() if key == 6) 

任何建議讚賞什麼是正確的語法。

+2

'6:0.15'的類型是什麼?串? – RomanPerekhrest

+0

這不是你實際可以擁有的清單。 – user2357112

+1

是'a = [{1:0.4},{6:0.15},...]'? –

回答

0

我相信這是你在找什麼:

a = [[1,0.4], [6,0.15], [6,0.15], [7,0.1]] 

sumvalue = 0 
for b in a: 
    if b[0] == 6: 
     sumvalue += b[1] 

在任何情況下,您在問題中呈現的列表都不能存在。

此外,如果有什麼不起作用,通常採取更小的步驟會更好。

編輯:根據最終的數據結構,上面的答案可能會更好。

+0

太好了,謝謝。只需掌握Python數據結構。 –

+0

嗯...這隻會給你一個總和,其中的關鍵是6 ...我不完全確定這是OP的要求(雖然它肯定是在正確的方向邁出的一步) –

+0

這就是我至少理解這個問題。 – Rob

2

生病假設你確實有類型的字典列表,並沒有什麼奇怪的數據結構是在你原來的問題並不在Python存在

a = [{1:0.4}, {6:0.15}, {6:0.15}, {7:0.1}] 

from collections import defaultdict 
sums = defaultdict(int) 

for data_dict in a: 
    for k,v in data_dict.items(): 
     sums[k] += v 

print sums 
+0

太好了,謝謝。只需掌握Python數據結構。 –

0

a = [(1:0.4), (6:0.15), (6:0.15), (7:0.1)]是非法的python表達式。

你可能意指a = [{1:0.4}, {6:0.15}, {6:0.15}, {7:0.1}]

如果是這樣,那麼sum([item[6] for item in a if list(item.keys())==[6]])