0Pricing
Python Academy · Урок

Генераторы словарей

Создавайте словари лаконично с помощью синтаксиса генераторов.

«Генераторы словарей» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Выражения-генераторы словарей позволяют кратко создавать словари из любого итерируемого объекта.

Базовое выражение-генератор словаря

{k: v for k, v in items} — базовая форма. Пример: {x: x**2 for x in range(5)} сопоставляет числа с их квадратами.
squares = {x: x**2 for x in range(5)}
print(squares)

С условием

Добавьте if в конце для фильтрации: {x: x**2 for x in range(10) if x % 2 == 0} оставляет только чётные числа.
evens = {x: x**2 for x in range(10) if x % 2 == 0}
print(evens)

Инвертирование словаря

{v: k for k, v in d.items()} меняет местами ключи и значения. Это работает только в том случае, если все значения уникальны и хешируемы.
d = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in d.items()}
print(inverted)

Из двух списков

{k: v for k, v in zip(keys, values)} — самый понятный способ создать словарь из параллельных списков.
keys = ['name', 'age']
vals = ['Alice', 30]
d = {k: v for k, v in zip(keys, vals)}
print(d)

Преобразование значений

Примените функцию ко всем значениям: {k: v.upper() for k, v in d.items()} преобразует все строковые значения в верхний регистр.
d = {'a': 'hello', 'b': 'world'}
result = {k: v.upper() for k, v in d.items()}
print(result)

Вложенное выражение-генератор словаря

{outer_k: {inner_k: inner_v} ...} создаёт вложенные выражения-генераторы. Учитывайте читаемость: если код сложный, используйте обычный цикл.
nested = {i: {j: i*j for j in range(3)} for i in range(3)}
print(nested)

Группировка с помощью выражения-генератора

Сгруппируйте элементы по свойству: {k: [v for v in values if condition(v, k)] for k in keys}
words = ['apple', 'art', 'banana', 'blueberry']
grouped = {ch: [w for w in words if w.startswith(ch)] for ch in 'ab'}
print(grouped)

Объединение и переопределение

{**d1, **d2} объединяет два словаря способом, похожим на выражение-генератор. При совпадении ключей используются значения из d2.
d1 = {'a': 1, 'b': 2}
d2 = {'b': 99, 'c': 3}
merged = {**d1, **d2}
print(merged)

Словарь и defaultdict

Выражения-генераторы создают обычные словари. Используйте defaultdict, если Вам нужна автоматическая инициализация отсутствующих ключей.
from collections import defaultdict
d = defaultdict(list)
for w in ['apple', 'art', 'banana']:
    d[w[0]].append(w)
print(dict(d))

Производительность

Выражения-генераторы словарей обычно работают быстрее эквивалентного построения в цикле for, поскольку интерпретатор оптимизирует их внутри.
# Comprehension
squares = {x: x**2 for x in range(1000)}
print(len(squares))

Быстрая проверка

Что делает {v: k for k, v in d.items()}?

Итоги

Выражения-генераторы словарей: {k: v for ... if ...}. Используйте их для инвертирования словарей, преобразования значений, группировки и фильтрации. Для параллельных списков объединяйте их с zip().

Продолжить обучение

Отличная работа! Перейдите к следующему уроку, чтобы продолжить развивать свои навыки.

Часто задаваемые вопросы

Урок «Генераторы словарей» бесплатный?

Да — полный текст урока «Генераторы словарей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Генераторы словарей»?

Создавайте словари лаконично с помощью синтаксиса генераторов. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Генераторы словарей»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы словарей
  2. Методы словарей
  3. Множества и операции над ними
  4. Генераторы словарей
← Назад к Python Academy