Menu
CoddyTech

データトランスフォーマー

CoddyのPythonジャーニー「ロジックとフロー」セクションの一部。レッスン 78/78。

challenge icon

チャレンジ

難しい

分析のために学生の記録リストを処理する、transform_datasetという名前の関数を作成してください。

各記録は、次の内容を含む辞書です。

  • student_id:学生を一意に識別するID
  • grades:数値の成績のリスト
  • subjects:学生が履修している科目のリスト

関数は次の処理を行う必要があります。

  1. 各学生の平均成績を計算する
  2. すべての成績が70を超えている学生(条件を満たす学生)のみを含める。この条件の確認には、Pythonのall()関数を使用してください。
  3. 条件を満たす学生が履修している科目の概要を作成し、各科目を履修している該当学生の人数を数える
  4. 次の2つのキーを持つ辞書を返す。
    • 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オンラインコンパイラ