遍历字典列表筛选特定学科学生姓名的实现问题
筛选学生字典列表的解决方案
假设你的student_roster结构如下(类似的字典列表):
student_roster = [ {"name": "Alice", "favorite_subject": "Math"}, {"name": "Bob", "favorite_subject": "English"}, {"name": "Charlie", "favorite_subject": "Science"}, {"name": "Diana", "favorite_subject": "History"} ]
两种实现方式
- 普通for循环:逐个遍历学生字典,判断科目符合要求后,提取姓名加入结果列表
stem = [] for student in student_roster: if student["favorite_subject"] in ("Math", "Science"): stem.append(student["name"])
- 列表推导式(简洁版):用一行代码完成筛选与提取,Python中常用的写法
stem = [student["name"] for student in student_roster if student["favorite_subject"] in ("Math", "Science")]
关键注意点
你之前出错的核心是没有明确指定提取student["name"]字段:
- 如果直接
append(student)会把整个字典加入列表 - 如果
append(student.values())会把字典的所有值(比如姓名、科目等)以列表形式加入
运行上述代码后,stem的结果为:["Alice", "Charlie"],完全符合你需要筛选STEM学科学生姓名的需求。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

