建立月度总计列表

时间:2011-05-30 13:17:42

标签: python

我有一个表示小部件的对象列表。每个窗口小部件对象都有一个制作的DateTime字段,用于保存制作窗口小部件的日期和时间。列表中的所有小部件都是在特定年份制造的。

我想获得一个包含每个月制作的小部件的列表 - 例如:

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

所以在上面的列表中,3月份有819个小部件。

这样做的pythonic方式是什么?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

[sum(1 for widget in widgets if widget.datetime.month == m) for m in range(1,13)]