У вас есть список словарей users с ключами id и is_active. Нужно получить список идентификаторов только активных пользователей. Какое решение обычно проще читать, чем комбинация map и filter с анонимными функциями?

Amap(lambda u: u["id"], filter(lambda u: u["is_active"], users))
B[u["id"] for u in users if u.get("is_active")]
C{u["id"]: u for u in users if u.get("is_active")}
D[u for u in users if u.get("is_active") == True]
Правильный ответ. Списочное включение [u["id"] for u in users if u.get("is_active")] напрямую возвращает список идентификаторов активных пользователей.

Разбор

Целевой результат — это список значений id, поэтому подходит обычное списочное включение с фильтром по is_active. Связка map() + filter() даёт похожий результат, но возвращает ленивый итератор и читается тяжелее из-за двух lambda. Конструкция с двоеточием в фигурных скобках — это словарь по id, а не список. Вариант [u for u in users if ...] собирает целиком сами словари пользователей, а не их идентификаторы.

Проверь себя · 1/3разбор после ответа
Есть список строк raw = ["10", "", "3"]. Нужно получить список целых чисел только из непустых строк. Какой вариант корректен и читаем?
Тренировать Python в Telegram

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