Преобразователь данных
Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 78 из 78.
Задание
СложноСоздайте функцию с именем transform_dataset, которая обрабатывает список записей студентов для анализа.
Каждая запись — это словарь, содержащий:
student_id: уникальный идентификатор студентаgrades: список числовых оценокsubjects: список предметов, которые изучает студент
Ваша функция должна:
- Вычислять среднюю оценку для каждого студента
- Включать только студентов, у которых все оценки выше 70 (студентов, прошедших отбор) — для проверки этого условия используйте функцию Python
all() - Создавать сводку по предметам, которые изучают прошедшие отбор студенты, подсчитывая, сколько таких студентов изучают каждый предмет
- Возвращать словарь с двумя ключами:
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Все уроки раздела Логика и управление потоком выполнения
1Изучение переменных
КонстантыМножественное присваиваниеОбмен значениями переменныхПеременные-заполнителиОкругление чиселПриведение к списку4Приложение «Книга контактов»
Показать менюДобавить контакт7Множества. Часть 2
Математические операции. Часть 1Математические операции. Часть 2Повторение — Охота за сокровищамиПодмножества и надмножестваИтерация по множествамПовторение — Трекер турнира10Базовые генераторы списков
СинтаксисСоздание простых списковДобавление условийИспользование агрегации данныхПовторение — Дом списковПовторение — Элементы свободы13Система управления запасами
Обзор проектаДобавление товара2Словари. Часть 1
Что такое словарь?Создание словаряДоступ к значениямИзменение словарейИтоги — Менеджер рецептов5Продвинутое принятие решений
Тернарный операторПроверка вхожденияПроверка идентичностиОшибки отступовПовторение — Фильтр отпусков8Менеджер записей студентов
Обзор проектаДобавить студента11Продвинутые функции
Возврат нескольких значенийLambda-функции. Часть 1Lambda-функции. Часть 2Задача на повторение — Lambda-сортировкаРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного списка14Функции высшего порядка
Функция mapФункция filterПовторение — Валидатор emailПовторение — Обработчик чисел3Словари. Часть 2
Методы словарейВложенные словариПроверка наличия ключейПеребор словарей в циклеПовторение: счетчик частоты6Множества. Часть 1
Что такое множество?Основные операцииМетоды множествПовторение — удаление дубликатов9Продвинутая агрегация данных
Использование SumПоиск минимума и максимумаЭффективная сортировка данныхПовторение — Dictionary SorterПотренируйтесь самостоятельно: Онлайн-компилятор Python