Reshape: Melt

MediumPython
05:00
Лучше работает на десктопе
Pandasmeltreshape

Дана таблица в широком формате (словарь): name + несколько предметов с оценками.

Преобразуйте в длинный формат: список dict с ключами name, subject, score.

Сигнатура

def melt_scores(data: dict) -> list[dict]:

Примеры

data = {"name": ["Alice","Bob"], "math": [90,78], "physics": [85,92], "chemistry": [88,81]}
melt_scores(data) → [
    {"name": "Alice", "subject": "chemistry", "score": 88},
    {"name": "Alice", "subject": "math", "score": 90},
    {"name": "Alice", "subject": "physics", "score": 85},
    {"name": "Bob", "subject": "chemistry", "score": 81},
    {"name": "Bob", "subject": "math", "score": 78},
    {"name": "Bob", "subject": "physics", "score": 92}
]

Отсортировано по name, затем по subject.

Примеры

Пример 1

Вход:
data = {"name":["Alice","Bob"],"math":[90,78],"physics":[85,92],"chemistry":[88,81]}
Выход:[{"name":"Alice","subject":"chemistry","score":88},{"name":"Alice","subject":"math","score":90},{"name":"Alice","subject":"physics","score":85},{"name":"Bob","subject":"chemistry","score":81},{"name":"Bob","subject":"math","score":78},{"name":"Bob","subject":"physics","score":92}]

Пример 2

Вход:
data = {"name":["Charlie","Alice"],"algebra":[70,95],"geometry":[80,90]}
Выход:[{"name":"Alice","subject":"algebra","score":95},{"name":"Alice","subject":"geometry","score":90},{"name":"Charlie","subject":"algebra","score":70},{"name":"Charlie","subject":"geometry","score":80}]

Пример 3

Вход:
data = {"name":["A"],"X":[1],"Y":[2],"Z":[3]}
Выход:[{"name":"A","subject":"X","score":1},{"name":"A","subject":"Y","score":2},{"name":"A","subject":"Z","score":3}]
Консоль
Нажмите Run или Ctrl+Enter для запуска