如何删除列表中重复键的字典元素并保留同键下值最大的项
实现方法
核心思路分两步:首先遍历所有字典统计每个键对应的最大值,再将统计结果转换为目标格式的字典列表。
基础实现(无第三方依赖,兼容所有Python版本)
a = [{1: 2}, {1: 3}, {2: 5}, {2: 3}] # 临时字典存储每个键对应的最大值 max_record = {} for item in a: # 取出当前单键字典的键和值 key, val = next(iter(item.items())) # 键不存在或者当前值更大时更新记录 if key not in max_record or val > max_record[key]: max_record[key] = val # 转换为目标格式 result = [{k: v} for k, v in max_record.items()] print(result) # 输出:[{1: 3}, {2: 5}]
扩展说明
如果你的列表中存在包含多个键的字典,只需修改遍历逻辑,对每个字典内的所有键值对单独判断即可:
a = [{1: 2, 3: 4}, {1: 3}, {2: 5, 3: 1}, {2: 3}] max_record = {} for item in a: for key, val in item.items(): if key not in max_record or val > max_record[key]: max_record[key] = val result = [{k: v} for k, v in max_record.items()] # 输出:[{1: 3}, {3: 4}, {2: 5}]
Python 3.7及以上版本默认保留字典的插入顺序,最终输出中键的顺序和原列表中键第一次出现的顺序完全一致,符合需求预期。
内容的提问来源于stack exchange,提问作者BraveRock
相关产品推荐
相关产品推荐

