[英]Summarizing a python list of dicts
給定以下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
或collections.Counter
對每個product
計數High
, Med
和Low
,然后在最后合並結果。
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}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.