В данных пользователей поле города может отсутствовать. Нужно получить множество уникальных городов в нижнем регистре, пропуская отсутствующие значения. Какой вариант подходит?
A
[u['city'].lower() for u in users if u.get('city')]B
{u['city'].lower() for u in users if u.get('city')}C
set(u['city'].lower() for u in users)D
{u['city'] for u in users if u.get('city')}Правильный ответ. Множество с
.lower() и фильтром по непустому полю даёт уникальные города в нижнем регистре без отсутствующих значений.Разбор
Конструкция {u['city'].lower() for u in users if u.get('city')} использует множество (фигурные скобки без двоеточия), приводит каждый город к нижнему регистру и заранее отбрасывает записи с отсутствующим или пустым city. Вариант с квадратными скобками — это список, в нём останутся дубликаты. Вариант set(u['city'].lower() for u in users) упадёт на отсутствующих ключах, потому что фильтра нет. Последний вариант сохраняет регистр, поэтому одинаковые города в разном регистре будут считаться разными.
Проверь себя · 1/3разбор после ответа
Нужно получить список строк без пустых значений из
items. Вы решили использовать filter(), и хотите избежать лишнего lambda. Какой вариант лучше?Ещё вопросы по теме «Генераторы списков и встроенные функции»
- Дан список `xs = [1, -2, 3, 0]`. Что вернёт выражение `[x * 2 for x in xs if x > 0]`?
- Есть список словарей `users`, где у некоторых пользователей отсутствует email (например, `u.get("email")` возвращает `None`). Нужно получить список email в нижнем регистре, пропуская отсутствующие. Какой вариант обычно наиболее читаемый?
- Дан список батчей `batches = [[101, 102], [], [103]]`. Что вернёт выражение `[x for batch in batches for x in batch]`?
- Дан список `vals = [0, 1, 2]`. Что вернёт выражение `[x if x % 2 == 0 else -1 for x in vals]`?
- У вас есть список словарей `users` с ключами `id` и `is_active`. Нужно получить список идентификаторов только активных пользователей. Какое решение обычно проще читать, чем комбинация `map` и `filter` с анонимными функциями?
- Все вопросы по «Генераторы списков и встроенные функции» →