如何对字典列表中相同label对应的value值求和并输出新字典列表
按label聚合value的实现方法
核心思路是先通过中间容器统计每个label对应的value总和,再将统计结果转换为目标格式的字典列表。
基础实现(无需导入第三方包)
适用于所有Python版本,逻辑易懂:
liste = [{"label": "hello", "value":12} , {"label": "hello", "value": 2},{"label": "world", "value": 21} ] # 用普通字典做临时统计 sum_map = {} for item in liste: current_label = item["label"] # 若label不存在则默认取值为0,累加当前value sum_map[current_label] = sum_map.get(current_label, 0) + item["value"] # 转换为要求的输出格式 result = [{"label": k, "value": v} for k, v in sum_map.items()]
运行后result的值为:[{"label": "hello", "value": 14},{"label": "world", "value": 21}],符合需求。
简洁实现(借助标准库)
使用Python标准库collections的defaultdict简化统计逻辑:
from collections import defaultdict liste = [{"label": "hello", "value":12} , {"label": "hello", "value": 2},{"label": "world", "value": 21} ] sum_map = defaultdict(int) for item in liste: sum_map[item["label"]] += item["value"] result = [{"label": k, "value": v} for k, v in sum_map.items()]
注意:Python 3.7及以上版本默认保留字典的插入顺序,输出列表中label的顺序和原列表第一次出现的顺序一致;如果使用更低版本且需要保序,可以用
collections.OrderedDict替代普通字典。
内容的提问来源于stack exchange,提问作者John nicola
相关产品推荐
相关产品推荐

