2017-11-29 24 views
0

私はグループ化する必要があるdictsのリストを持っています。同時にカウントして合計する必要があります。 私の場合、この辞書が作業者のために何回表示されているかをカウントします。 作業者に基づいて1つのキーの合計フィールドは何ですか? 私はその時に1つしかできません。pythonグループby sumとcountが同時に働かない

これは私のコード

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) 

合計は常に0

任意の提案を返しています?

はあなたがgroupbyが複数回生成することを反復可能オブジェクトを反復処理することができません

答えて

1

ありがとうございました。 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

関連する問題