2017-11-29 28 views
0

나는 그룹화해야하는 dicts 목록을 가지고 있으며, 동시에 count와 sum을해야합니다. 내 사전에이 사전이 얼마나 많은 시간 동안 근로자에게 나타 났는지를 나타냅니다. 근로자를 기준으로 한 키의 합계 필드는 무엇입니까? 한 번에 할 수 있지만 둘 다 할 수는 없습니다.python 그룹 by 합계와 count가 동시에 작동하지 않음

이 합은 항상 0

어떤 제안을 반환

grouper = lambda x: (x["rw_worker_nick"], x["rw_date"].replace(day=1)) 
vacation_group = [] 
for key, grp in groupby(sorted(vacation, key = grouper), grouper): 
    temp_dict = dict(zip(["rw_worker_nick", "rw_date"], key)) 
    temp_dict['vac_days'] = len(list(grp)) 
    temp_dict['vac_duration'] = sum(item["rw_duration"] for item in grp) 
    vacation_group.append(temp_dict) 

내 코드?

답변

1

당신은 groupby 번 이상이 생산하는 반복 가능 객체를 반복 할 수없는 감사합니다. list(grp)은 반복 가능 항목에서 모든 항목을 소비했습니다.

스토어 목록이 먼저 그에서 길이와 합을 :

for key, grp in groupby(sorted(vacation, key = grouper), grouper): 
    temp_dict = dict(zip(["rw_worker_nick", "rw_date"], key)) 
    grp = list(grp)) 
    temp_dict['vac_days'] = len(grp) 
    temp_dict['vac_duration'] = sum(item["rw_duration"] for item in grp) 
    vacation_group.append(temp_dict) 
+0

고맙습니다 - 매력처럼 작동 – Yebach