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

如何从Python字典列表中筛选出分数≥80的学生姓名?

问题解决:筛选分数≥80的学生姓名列表

问题描述

现有Python字典列表数据:

student_data = [
    {"name":"Budi", "score": 90},
    {"name":"Nina", "score": 78},
    {"name":"Rudi", "score": 91},
    {"name":"Olivia","score": 76},
    {"name":"Leo", "score": 80},
    {"name":"Liam", "score": 67},
    {"name":"Sheila","score": 76}
]

需求:获取分数≥80的学生姓名并以列表形式输出,预期结果:['Budi', 'Rudi', 'Leo']

尝试以下代码出现报错:

for i in range(len(student_data)): 
    if student_data[i].values()>=80:
        print(student_data[i].keys())

错误原因

  1. 类型不匹配:student_data[i].values() 返回的是字典所有值的视图对象(如dict_values(['Budi', 90])),无法直接与整数80做比较,会触发类型错误
  2. 取值错误:student_data[i].keys() 返回的是字典的键集合,不是学生姓名,应该通过student_data[i]['name']直接获取姓名
  3. 未收集结果:原代码仅逐个打印,无法生成预期的列表格式

正确实现

方法1:普通循环收集结果

student_data = [
    {"name":"Budi", "score": 90},
    {"name":"Nina", "score": 78},
    {"name":"Rudi", "score": 91},
    {"name":"Olivia","score": 76},
    {"name":"Leo", "score": 80},
    {"name":"Liam", "score": 67},
    {"name":"Sheila","score": 76}
]

result = []
for student in student_data:
    # 直接通过键名获取分数和姓名
    if student["score"] >= 80:
        result.append(student["name"])
print(result)

方法2:列表推导式(更简洁)

student_data = [
    {"name":"Budi", "score": 90},
    {"name":"Nina", "score": 78},
    {"name":"Rudi", "score": 91},
    {"name":"Olivia","score": 76},
    {"name":"Leo", "score": 80},
    {"name":"Liam", "score": 67},
    {"name":"Sheila","score": 76}
]

# 一行代码完成筛选和收集
result = [student["name"] for student in student_data if student["score"] >= 80]
print(result)

两种方法运行后都会输出预期结果:['Budi', 'Rudi', 'Leo']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:45:48