Menu
CoddyTech

数据转换器

本课属于 Coddy Python 学习旅程的“逻辑与流程”单元。第 78 课,共 78 课。

challenge icon

挑战

困难

创建一个名为 transform_dataset 的函数,用于处理学生记录列表并进行分析。

每条记录都是一个字典,包含:

  • student_id:学生的唯一标识符
  • grades:由数字成绩组成的列表
  • subjects:学生正在学习的科目列表

你的函数应当:

  1. 计算每位学生的平均成绩
  2. 只纳入所有成绩都高于 70 的学生(符合条件的学生),你应使用 Python 的 all() 函数检查此条件
  3. 汇总符合条件的学生所学的科目,并统计每门科目有多少名符合条件的学生在学习
  4. 返回一个包含两个键的字典:
    • qualified_students:一个将学生 ID 映射到其平均成绩的字典(四舍五入到小数点后 2 位)
    • subject_summary:一个将科目映射到学习该科目的符合条件学生人数的字典

注意:Python 中的 all() 函数仅当可迭代对象中的所有元素都为真时才返回 True。例如,all(grade > 70 for grade in grades) 仅当每个成绩都高于 70 时才会返回 True。

示例输入:

[
    {
        "student_id": "S123", 
        "grades": [88, 92, 85], 
        "subjects": ["Math", "Science", "History"]
    },
    {
        "student_id": "S124", 
        "grades": [65, 95, 80], 
        "subjects": ["Math", "Science", "English"]
    },
    {
        "student_id": "S125", 
        "grades": [91, 89, 92], 
        "subjects": ["Math", "Physics", "History"]
    }
]

示例输出:

{
    'qualified_students': {'S123': 88.33, 'S125': 90.67}, 
    'subject_summary': {'Math': 2, 'Science': 1, 'History': 2, 'Physics': 1}
}

亲手试试

def transform_dataset(data):
    # 在这里写你的答案
    
    # 第 1 步:计算每位学生的平均成绩,并筛选出符合条件的学生
    # (所有科目成绩都高于 70 分的学生)
    
    # 第 2 步:汇总符合条件的学生所修的科目
    
    # 第 3 步:返回包含 qualified_students 和 subject_summary 的最终字典
    pass

逻辑与流程中的所有课

自己练习: Python 在线编译器