You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python内置库过滤字典列表,保留唯一名称最低分条目

问题:过滤字典列表,保留每个唯一name对应score最低的条目

给定如下字典列表:

[{"score":-10, "name": "Tom", "etc": 1}, {"score":-20, "name": "Tom", "etc": 2}, {"score":-110, "name": "Jerry", "etc": 3}, {"score":-210, "name": "Jerry", "etc": 5}]

需要过滤列表,让每个唯一的name仅保留score最低的条目,期望结果为:

[ {"score":-20, "name": "Tom", "etc": 2}, {"score":-210, "name": "Jerry", "etc": 5}]

要求不使用pandas,仅用Python内置库实现。


实现思路

  • 初始化一个空字典,用于跟踪每个name对应的最低score条目
  • 遍历原始列表中的每一个字典项:
    • 取出当前项的name作为字典的键
    • 若该name未在字典中,或者当前项的score比字典中已存条目score更小,则更新字典中该name对应的条目
  • 将字典中的所有值转换为列表,即为最终结果

代码实现

original_list = [
    {"score":-10, "name": "Tom", "etc": 1},
    {"score":-20, "name": "Tom", "etc": 2},
    {"score":-110, "name": "Jerry", "etc": 3},
    {"score":-210, "name": "Jerry", "etc": 5}
]

result_dict = {}
for item in original_list:
    name = item["name"]
    if name not in result_dict or item["score"] < result_dict[name]["score"]:
        result_dict[name] = item

final_result = list(result_dict.values())
print(final_result)

代码说明

  • 临时字典result_dict以name为唯一键,确保每个name只会保留一条记录
  • 遍历过程中实时比较score值,保证最终留存的是该name对应的最小score条目
  • 最后通过list(result_dict.values())提取字典值并转为列表,得到目标结果

内容的提问来源于stack exchange,提问作者Nir Vana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:47:02