データトランスフォーマー
CoddyのPythonジャーニー「Logic & Flow」セクションの一部 — レッスン 78/78。
チャレンジ
難しい分析のために学生の記録リストを処理する、transform_dataset という名前の関数を作成してください。
各記録は、以下の内容を含む辞書です:
student_id: 学生の一意の識別子grades: 数値による成績のリストsubjects: 学生が履修している科目のリスト
関数は以下の処理を行う必要があります:
- 各学生の平均成績を計算する
- すべての成績が 70 を超えている学生(適格な学生)のみを含める - この条件を確認するには、Python の
all()関数を使用する必要があります - 適格な学生が履修している科目の要約を作成し、各科目を履修している適格な学生の数をカウントする
- 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