我有一个表示小部件的对象列表。每个窗口小部件对象都有一个制作的DateTime字段,用于保存制作窗口小部件的日期和时间。列表中的所有小部件都是在特定年份制造的。
我想获得一个包含每个月制作的小部件的列表 - 例如:
>>> totals
[1, 5, 819, 187, 1, 5, 15, 9, 13, 77, 54, 22]
所以在上面的列表中,3月份有819个小部件。
这样做的pythonic方式是什么?
答案 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)]