2011-05-30 39 views
0

我有一個表示小部件的對象列表。每個控件對象都有一個製造日期時間字段,用於保存構建控件的日期和時間。列表中的所有小部件都是在特定年份製造的。建立每月總計清單

我想獲得與每月生產總量部件列表 - 例如爲:

>>> totals 
[1, 5, 819, 187, 1, 5, 15, 9, 13, 77, 54, 22] 

所以在上面的列表在三月取得819只小部件。

這樣做的pythonic方式是什麼?

回答

5
totals = [0] * 12 
for widget in widgets: 
    totals[widget.datetime.month - 1] += 1 

totals的索引在0至11範圍內,而個月通常是範圍爲1至12,因此我們需要的- 1

在Python 2.7或3.1或以上的替代:

from collections import Counter 
totals = Counter(widget.datetime.month for widget in widgets) 
0
[sum(1 for widget in widgets if widget.datetime.month == m) for m in range(1,13)] 
+0

這將執行12次迭代,而不是單獨的一個 – 2011-05-30 13:57:57