如何将多个列表的指定元素存入同一变量且可区分对应课程
最优实现方案
推荐用结构化字典存储所有课程信息,既可以满足统一存储所有成绩的需求,也能快速调取单门课的对应信息,不需要手动逐个写判断逻辑。
具体实现代码
步骤1:结构化原始课程数据
# 先把所有原始课程数据统一存到一个列表里 all_courses_raw = [ ['undergraduate', '1110', 'Computer Science I', '2 4 0', 'BA', 'none'], ['undergraduate', '1120', 'Computer Science II', '2 4 0', 'none', '1110'], ['undergraduate', '3310', 'Data and File Structures', '1 3 0', 'none', '1310, 1120'], ['undergraduate', '1310', 'Foundations of Computer Sci', '1 4 0', 'C', 'none'], ['graduate', '5091', 'Computer Science Seminar', '1 2 0 seminar', 'none', '3310'] ] course_info = {} grade_map = {} # 统一存储所有成绩的grade变量,key为课程号,value为对应成绩 for course in all_courses_raw: course_id = course[1] # 用唯一的课程号作为索引 grade = course[4] has_grade = grade != "none" # 结构化存储单门课所有信息 course_info[course_id] = { "raw_list": course, # 保留原始列表数据,方便你调取原始信息 "grade": grade, "has_grade": has_grade, "course_name": course[2], "level": course[0] } grade_map[course_id] = grade
步骤2:调用方式
- 查看所有课程的成绩:直接访问
grade_map变量即可 - 单独查询某门课的信息(以课程号1110为例,对应你说的class1):
# 判断课程是否有成绩,直接返回布尔值True/False course_info["1110"]["has_grade"] # 获取课程具体成绩 course_info["1110"]["grade"] # 获取课程的原始列表数据 course_info["1110"]["raw_list"] - 批量筛选所有有成绩的课程:
graded_courses = [cid for cid, info in course_info.items() if info["has_grade"]]
方案优势
- 不需要手动为每门课写判断逻辑,后续新增课程只要往
all_courses_raw中添加条目即可自动完成处理 - 所有数据结构化存储,不需要记忆列表索引,可读性和可维护性更高
- 同时满足统一存储所有成绩、单独调取单门课信息的需求
内容的提问来源于stack exchange,提问作者Nich
相关产品推荐
相关产品推荐

