Словари в Python: шпаргалка

Ключи и значения: безопасный доступ, обход и подсчёт частот.

вся шпаргалка в PDF A4
koddo Шпаргалка по Python koddo.ru/cheatsheets/python

Словари в Python

Ключи и значения: безопасный доступ, обход и подсчёт частот.

Словарь: доступ к значению без KeyError

stock = {'coffee': 12, 'tea': 5}
stock['coffee']         # 12
stock.get('juice')      # None
stock.get('juice', 0)   # 0

Квадратные скобки падают с KeyError, когда ключа нет. get возвращает None или значение по умолчанию вторым аргументом — удобно для счётчиков.

Словарь: добавить, изменить, удалить

stock = {'coffee': 12}
stock['tea'] = 5                # add
stock['coffee'] = 10            # change
del stock['tea']
qty = stock.pop('juice', 0)     # 0, no KeyError

Присваивание по новому ключу добавляет пару, по существующему — перезаписывает. del падает на отсутствующем ключе, pop со вторым аргументом — нет.

Перебор словаря: keys, values, items

stock = {'coffee': 12, 'tea': 5}
for name in stock:      # keys
    print(name)
for name, qty in stock.items():
    print(name, qty)    # coffee 12, tea 5

for по словарю идёт по ключам; пары «ключ, значение» даёт items(). Только значения — values().

Ключ в словаре: in

stock = {'coffee': 12, 'tea': 5}
'coffee' in stock   # True
12 in stock         # False, values do not count
if 'tea' in stock:
    stock['tea'] += 1

in проверяет только ключи — значение 12 словарь «не видит». Паттерн if key in dict страхует доступ по скобкам от KeyError.

Словарное включение

prices = {'coffee': 199, 'tea': 99}
sale = {n: p // 2 for n, p in prices.items()}
# {'coffee': 99, 'tea': 49}
cheap = {n: p for n, p in prices.items() if p < 150}
# {'tea': 99}

Как списковое включение, но с парой ключ: значение слева. Удобно, например, перевернуть словарь: {v: k for k, v in d.items()}.

Обновлено 12 сентября 2026 г.

Где обычно ошибаются

Квадратные скобки падают с KeyError, когда ключа нет; get возвращает None или значение по умолчанию вторым аргументом — на этом строятся счётчики вроде counts.get(word, 0) + 1. Присваивание по новому ключу добавляет пару, по существующему — молча перезаписывает значение. del на отсутствующем ключе тоже падает, pop со вторым аргументом — нет. for по словарю идёт только по ключам: пары «ключ, значение» даёт items(), одни значения — values(). Оператор in проверяет ключи, а не значения, поэтому 12 in ages вернёт False, даже если такое значение есть; зато if key in dict страхует доступ по скобкам. Словарное включение работает как списковое, но с парой ключ: значение слева — так, например, переворачивают словарь: {v: k for k, v in d.items()}.

поделиться: Telegram VK

Подробнее в справочнике

Карточки выше — синтаксис: пример и подпись, где ошибаются. Статьи справочника объясняют, как это работает: с проверенным выводом и разбором типовых ошибок.

Что дальше