如何实现字典列表同类项价格求和合并(无显式键名依赖)
解决方案
实现代码
order = [{"name":"coffee", "price":5}, {"name":"mug", "price":10}, {"name":"coffee", "price":6}] # 临时字典用于按第一个键值对分组累加 temp_group = {} for item in order: # 获取字典的键列表(Python 3.7+ 保证插入顺序) keys = list(item.keys()) # 取第一个键对应的值作为分组标识 group_id = item[keys[0]] # 取第二个键作为求和字段 sum_field = keys[1] if group_id in temp_group: # 累加求和字段的值 temp_group[group_id][sum_field] += item[sum_field] else: # 首次出现该分组,存入字典副本 temp_group[group_id] = item.copy() # 转换为目标列表格式 final_order = list(temp_group.values()) print(final_order)
逻辑说明
- 用
temp_group字典做分组容器,避免直接遍历原列表时的索引混乱问题(这也是你之前循环出错的常见原因)。 - 通过索引
keys[0]和keys[1]获取分组键和求和字段,完全不依赖具体键名,适配未知字典结构的场景。 - 首次遇到分组时存入字典副本,后续遇到同分组项直接累加求和字段的值,最后将字典的值转为列表即可得到结果。
内容的提问来源于stack exchange,提问作者Arad Arvin
相关产品推荐
相关产品推荐

