Преобразователь данных
Часть раздела Logic & Flow путешествия по 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Все уроки раздела Logic & Flow
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