Код Middle Django ORM и N+1 обновлено

Как prefetch_related склеивает данные

Условие

Реализуйте склейку, которую делает prefetch_related: на вход orders (список словарей с id) и items (список словарей с order_id), полученные двумя запросами. Верните заказы в исходном порядке, добавив каждому ключ items со списком его позиций в исходном порядке позиций (без поля order_id). Решение O(n + m).

Примеры

attach([{"id":1}, {"id":2}], [{"order_id":2,"sku":"b"}, {"order_id":1,"sku":"a"}, {"order_id":2,"sku":"c"}]) // [{"id":1,"items":[{"sku":"a"}]}, {"id":2,"items":[{"sku":"b"},{"sku":"c"}]}]
attach([], []) // []
attach([{"id":5}], []) // [{"id":5,"items":[]}]

Как подойти

Подсказки: 1
  1. Словарь order_id -> список позиций.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.