我正在尝试按dict列表中的2个键进行分组,第二个键是datetime.date。我需要按昵称和月份进行分组,并进行几个求和、条件求和等。
在SQL中,它类似于
select
rw_worker_nick
,date_trunc( 'month', rw_date ) as month
,sum(rw_end - rw_start) as work_time
from
results_woshi
where
rw_script = 93
group by
rw_worker_nick
,date_trunc( 'month', rw_date )
order by month
键与数据库列具有相同的名称
我认为在python中比在db级别的中更容易实现的条件还有一些
到目前为止,这是我的代码,但我不知道如何按月份分组
grouper = itemgetter("rw_worker_nick", "rw_date")
result = []
from itertools import groupby
from pprint import pprint
for key, grp in groupby(sorted(summary, key = grouper), grouper):
temp_dict = dict(zip(["rw_worker_nick", "rw_date"], key))
result.append(temp_dict)
与其依赖itemgetter
,不如编写自己的忽略日期的键函数:
grouper = lambda x: (x["rw_worker_nick"], x["rw_date"].replace(day=1))
这会将每个日期更改为其月份的第一天。如果要将同一月份不同年份的项目分组,可以使用x["rw_date"].month
而不是replace
调用。