只需提取要分组的方面;如果要按小时分组,则需要提取一个属性:from itertools import groupby
[list(g) for k, g in groupby(list_of_dts, key=lambda d: d.hour)]
或者使用^{}代替lambda:
^{pr2}$
请注意,groupby()不进行排序;它只会生成具有相同分组键的连续值组。在
如果需要对未排序的值进行分组,则最好在字典中进行分组:grouped = {}
for dt in list_of_dts:
grouped.setdefault(dt.hour, []).append(dt)
result = grouped.values()
或者,按小时对输出进行排序:result = [grouped[hour] for hour in sorted(grouped)]
演示:>>> import datetime
>>> from itertools import groupby
>>> from operator import attrgetter
>>> list_of_dts = [
... datetime.datetime(2012,1,1,0,0,0),
... datetime.datetime(2012,1,1,0,1,0),
... datetime.datetime(2012,1,1,1,8,0),
... datetime.datetime(2012,1,2,0,5,0),
... datetime.