2012-05-24 77 views
2

python是新的!下面是我在Python字典的名單:在python中添加數字,數字是從字典列表中提取的

[{'amt': 400, 'name': 'whatever1'}, {'amt': 300, 'name': 'whatever3'}, {'amt': 500, 'name': 'whatever2'}] 

我想所有的「AMT」加在一起,而無需使用完整的for循環。有任何想法嗎?

+0

你爲什麼要這麼做?你認爲它會更有效率嗎?你想讓它看起來比顯而易見的方式更神祕嗎? – msw

+1

那麼對於'pyton'來說,你還不能拼出它呢? – mhawke

回答

9
sum(L['amt'] for L in list_of_dicts) 

應該這樣做。

+0

我得到了類型錯誤,TypeError:'int'對象不可調用 – sammiwei

+0

我想不出一個沒有for循環的方法,但是也許一個生成器不會算作「完成for循環」。 – jgritty

+3

@sammiwei它聽起來像你在代碼'sum = 0'中有這樣的東西。不要這樣做。 'sum'是一個關鍵字,你用一個int值覆蓋它。 – jgritty

1
from operator import itemgetter 
from itertools import imap 
sum(imap(itemgetter('amt'), your_list)) 
0

另一種方式:

>>> LofD=[{'amt': 400, 'name': 'whatever1'}, {'amt': 300, 'name': 'whatever3'}, {'amt': 500, 'name': 'whatever2'}] 
>>> SumofAmt=0 
>>> for each in LofD: 
... SumofAmt+=each['amt'] 
... 
>>> SumofAmt 
1200 
+0

不太適合問題的'不使用完整的for循環'部分。 – Darthfett