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

如何过滤值为列表的Python字典,筛选最低测试分对应条目

问题描述

给定如下Python字典:

dict_results = {
    "first_names": ["john", "james", "carlos"],
    "last_names": ["smith", "jones", "sanchez"],
    "test_grade": [83, 79, 81]
}

需要筛选出test_grade中分数最低的人员信息,最终得到如下输出字典:

filtered_dict = {
    "first_names": ["james"],
    "last_names": ["jones"],
    "test_grade": [79]
}
解决方法

单最低分场景(仅取第一个最低分人员)

直接通过索引定位提取即可,代码如下:

dict_results = {
    "first_names": ["john", "james", "carlos"],
    "last_names": ["smith", "jones", "sanchez"],
    "test_grade": [83, 79, 81]
}

# 获取最低分对应的索引
min_grade_index = dict_results["test_grade"].index(min(dict_results["test_grade"]))

# 构建筛选后的字典
filtered_dict = {
    key: [value[min_grade_index]] 
    for key, value in dict_results.items()
}

print(filtered_dict)

代码逻辑:

  • 用min()拿到最低分,再通过index()获取该分数在列表中的位置
  • 遍历原字典的键值对,提取对应索引的元素并包装成列表,生成目标字典

多最低分场景(保留所有最低分人员)

如果存在多个相同最低分的情况,可通过枚举找出所有符合条件的索引,再批量提取:

dict_results = {
    "first_names": ["john", "james", "carlos", "amy"],
    "last_names": ["smith", "jones", "sanchez", "lee"],
    "test_grade": [83, 79, 81, 79]
}

min_grade = min(dict_results["test_grade"])
# 找出所有最低分的索引
min_indices = [i for i, grade in enumerate(dict_results["test_grade"]) if grade == min_grade]

# 构建包含所有最低分人员的字典
filtered_dict = {
    key: [value[i] for i in min_indices] 
    for key, value in dict_results.items()
}

print(filtered_dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:12:15