Есть список заказов orders, каждый элемент — словарь с ключами id и amount. Нужно собрать словарь id -> amount только для заказов с amount > 0. Какой код корректен?

Adict(orders)
B{(o["id"], o["amount"]) for o in orders if o["amount"] > 0}
C{o["id"]: o["amount"] for o in orders if o["amount"] > 0}
D{o["id"]: o for o in orders if o["amount"] > 0}
Правильный ответ. Dict comprehension имеет форму {key: value for ... if ...} и позволяет сразу описать и фильтрацию, и построение словаря.

Разбор

Вариант {o["id"]: o["amount"] for o in orders if o["amount"] > 0} создаёт нужное соответствие ключ → значение. Вариант с множеством {(...), ...} даёт set, а не dict. Вариант {o["id"]: o ...} сохраняет весь объект заказа, а не поле amount.

Проверь себя · 1/3разбор после ответа
Нужно преобразовать user_ids = [1, -1, 2] в список строк только для положительных значений. Какой вариант обычно читается проще?
Тренировать Python в Telegram

Ещё вопросы по теме «Генераторы списков и встроенные функции»