python列表分组名称_python – 按多个键分组并汇总字典列表的值...

获得汇总结果

from itertools import groupby

from operator import itemgetter

grouper = itemgetter("dept", "sku")

result = []

for key, grp in groupby(sorted(input_data, key = grouper), grouper):

temp_dict = dict(zip(["dept", "sku"], key))

temp_dict["qty"] = sum(item["qty"] for item in grp)

result.append(temp_dict)

from pprint import pprint

pprint(result)

产量

[{'dept': '001', 'qty': 200, 'sku': 'bar'},

{'dept': '001', 'qty': 400, 'sku': 'foo'},

{'dept': '002', 'qty': 900, 'sku': 'baz'},

{'dept': '002', 'qty': 600, 'sku': 'qux'},

{'dept': '003', 'qty': 700, 'sku': 'foo'}]

要获得平均值,您可以简单地更改for循环内的内容,就像这样

temp_dict = dict(zip(["dept", "sku"], key))

temp_list = [item["qty"] for item in grp]

temp_dict["avg"] = sum(temp_list) / len(temp_list)

result.append(temp_dict)

产量

[{'avg': 200, 'dept': '001', 'sku': 'bar'},

{'avg': 200, 'dept': '001', 'sku': 'foo'},

{'avg': 450, 'dept': '002', 'sku': 'baz'},

{'avg': 600, 'dept': '002', 'sku': 'qux'},

{'avg': 700, 'dept': '003', 'sku': 'foo'}]

建议:无论如何,我会在这样的dict中添加qty和avg

temp_dict = dict(zip(["dept", "sku"], key))

temp_list = [item["qty"] for item in grp]

temp_dict["qty"] = sum(temp_list)

temp_dict["avg"] = temp_dict["qty"] / len(temp_list)

result.append(temp_dict)

产量

[{'avg': 200, 'dept': '001', 'qty': 200, 'sku': 'bar'},

{'avg': 200, 'dept': '001', 'qty': 400, 'sku': 'foo'},

{'avg': 450, 'dept': '002', 'qty': 900, 'sku': 'baz'},

{'avg': 600, 'dept': '002', 'qty': 600, 'sku': 'qux'},

{'avg': 700, 'dept': '003', 'qty': 700, 'sku': 'foo'}]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值