0
我有一個表示小部件的對象列表。每個控件對象都有一個製造日期時間字段,用於保存構建控件的日期和時間。列表中的所有小部件都是在特定年份製造的。建立每月總計清單
我想獲得與每月生產總量部件列表 - 例如爲:
>>> totals
[1, 5, 819, 187, 1, 5, 15, 9, 13, 77, 54, 22]
所以在上面的列表在三月取得819只小部件。
這樣做的pythonic方式是什麼?
我有一個表示小部件的對象列表。每個控件對象都有一個製造日期時間字段,用於保存構建控件的日期和時間。列表中的所有小部件都是在特定年份製造的。建立每月總計清單
我想獲得與每月生產總量部件列表 - 例如爲:
>>> totals
[1, 5, 819, 187, 1, 5, 15, 9, 13, 77, 54, 22]
所以在上面的列表在三月取得819只小部件。
這樣做的pythonic方式是什麼?
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)
[sum(1 for widget in widgets if widget.datetime.month == m) for m in range(1,13)]
這將執行12次迭代,而不是單獨的一個 – 2011-05-30 13:57:57