python - 总结字典的python列表
问题描述
给定以下 python 字典列表:
product_issues = [
{'product':'battery',
'High': 0,
'Med':1
'Low':0
'},
{'product':'battery',
'High': 1,
'Med':0
'Low':0
'},
{'product':'battery',
'High': 1,
'Med':0
'Low':0
'},
{'product':'tape',
'High': 1,
'Med':0
'Low':0
'},
{'product':'tape',
'High': 1,
'Med':0
'Low':0
'},
]
为每个产品生成以下 H/M/L 汇总:
product_issues_summary = [
{'product':'battery',
'High': 2,
'Med':1
'Low':0
'},
{'product':'tape',
'High': 2,
'Med':0
'Low':0
'},
]
感谢任何反馈。
解决方案
这是你可以尝试的东西。它使用collections.defaultdict
orcollections.Counter
来计数High
,Med
并且Low
对于每个product
,然后在最后合并结果。
from collections import defaultdict, Counter
product_issues = [
{"product": "battery", "High": 0, "Med": 1, "Low": 0},
{"product": "battery", "High": 1, "Med": 0, "Low": 0},
{"product": "battery", "High": 1, "Med": 0, "Low": 0},
{"product": "tape", "High": 1, "Med": 0, "Low": 0},
{"product": "tape", "High": 1, "Med": 0, "Low": 0},
]
d = defaultdict(Counter)
for product in product_issues:
levels = {k: v for k, v in product.items() if k != "product"}
d[product["product"]].update(levels)
print([{**{"product": k}, **v} for k, v in d.items()])
总结结果:
[{'product': 'battery', 'High': 2, 'Med': 1, 'Low': 0}, {'product': 'tape', 'High': 2, 'Med': 0, 'Low': 0}]
推荐阅读
- asp.net-mvc - 如何获取列表
从 Razor Page 使用打字稿? - powershell - Netadapter 切换器 PowerShell 脚本
- c# - 如何在 StepArgumentTransformation 中使用 REGEX 查找前缀字符串
- css - CSS 选择 1、2、3,然后是 7、8、9,然后是 13、14、15 等
- typescript - 如何在文档中保留设置?
- vba - 如何在 VBA 中添加一天并使用格式 fct
- android - 开始一项活动 10 次,但一次只能进行一次
- python - 集群数量未知的集群
- macos - 将 32 位动态库转换为 64 位的 osx
- node.js - 无法使用本地护照登录