Menu
CoddyTech

Преобразователь данных

Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 78 из 78.

challenge icon

Задание

Сложно

Создайте функцию с именем transform_dataset, которая обрабатывает список записей студентов для анализа.

Каждая запись — это словарь, содержащий:

  • student_id: уникальный идентификатор студента
  • grades: список числовых оценок
  • subjects: список предметов, которые изучает студент

Ваша функция должна:

  1. Вычислять среднюю оценку для каждого студента
  2. Включать только студентов, у которых все оценки выше 70 (студентов, прошедших отбор) — для проверки этого условия используйте функцию Python all()
  3. Создавать сводку по предметам, которые изучают прошедшие отбор студенты, подсчитывая, сколько таких студентов изучают каждый предмет
  4. Возвращать словарь с двумя ключами:
    • qualified_students: словарь, сопоставляющий идентификаторы студентов их средним оценкам (округлённым до 2 знаков после запятой)
    • subject_summary: словарь, сопоставляющий предметы количеству прошедших отбор студентов, изучающих этот предмет

Примечание: функция all() в Python возвращает True, только если все элементы итерируемого объекта истинны. Например, all(grade > 70 for grade in grades) вернёт True, только если каждая оценка выше 70.

Пример входных данных:

[
    {
        "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