Есть словарь code_to_name = {"RU": "Russia", "FR": "France"}. Нужно получить обратное отображение name_to_code (предполагаем, что значения уникальны). Какой вариант корректен?
A
{v: k for k, v in code_to_name.items()}B
{k: v for k, v in code_to_name.items()}C
dict(code_to_name.items())D
list(code_to_name.items())Правильный ответ. Через
.items() удобно взять пары ключ-значение и поменять их местами в dict comprehension.Разбор
В выражении {v: k for k, v in code_to_name.items()} мы явно меняем местами ключ и значение: новый ключ — это старое значение v, а новое значение — старый ключ k. Важно, чтобы значения были уникальны, иначе при инвертировании ключи начнут перезаписываться.
Проверь себя · 1/3разбор после ответа
Есть список словарей
users, где у некоторых пользователей отсутствует email (например, u.get("email") возвращает None). Нужно получить список email в нижнем регистре, пропуская отсутствующие. Какой вариант обычно наиболее читаемый?Ещё вопросы по теме «Генераторы списков и встроенные функции»
- Дан список `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`. Нужно получить список `id` только активных пользователей. Какое решение обычно проще читать, чем комбинация `map()` + `filter()` с `lambda`?
- Все вопросы по «Генераторы списков и встроенные функции» →