python 多个列表求平均_python-按多个键分组并汇总/平均词典列表的...

我是Python的新手,并且遇到了以下代码的问题.

我正在寻找一种方法,可以按多个键分组并汇总/平均使用Python词典列表的值.下面的代码(也位于先前的问题/响应,位于:Group by multiple keys and summarize/average values of a list of dictionaries)使我处在正确的轨道上,但我遇到了在循环中添加更多字段聚合的问题.

假设我有一个字典列表,如下所示:

input = [

{'msn': '001', 'source': 'foo', 'status': '1', 'qty': 100, 'vol': 100},

{'msn': '001', 'source': 'bar', 'status': '2', 'qty': 200, 'vol': 200},

{'msn': '001', 'source': 'foo', 'status': '1', 'qty': 300, 'vol': 300},

{'msn': '002', 'source': 'baz', 'status': '2', 'qty': 400, 'vol': 100},

{'msn': '002', 'source': 'baz', 'status': '1', 'qty': 500, 'vol': 400},

{'msn': '002', 'source': 'qux', 'status': '1', 'qty': 600, 'vol': 100},

{'msn': '003', 'source': 'foo', 'status': '2', 'qty': 700, 'vol': 200}]

到目前为止,我的代码:

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

temp_dict = dict(zip(["msn", "source"], key))

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

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

result.append(temp_dict)

预期结果是:

{'msn': '001', 'source': 'foo', 'qty': 400, 'vol': 400},

{'msn': '001', 'source': 'bar', 'qty': 200, 'vol': 200},

{'msn': '002', 'source': 'baz', 'qty': 200, 'vol': 500},

{'msn': '003', 'source': 'foo', 'qty': 900, 'vol': 200}]

在temp循环中放置temp_dict [“ vol”] = sum(grp中的item [item [“ vol”])不会产生所需的结果,这最终是我的问题.

在添加(附加)另一个字段及其计算值到列表中的同时,如何保存键,如代码中所示分组?

在此先感谢您的帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值