← Все вопросы
Как безопасно увеличить счётчик в словаре, если ключа ещё нет?
13
Считаю что-то в цикле, но при первом обращении к ключу падает KeyError, потому что значения ещё нет. Какой самый аккуратный способ?
2 ответа
22
Три рабочих варианта, выбирай по вкусу:
# 1) dict.get с дефолтом
cnt[x] = cnt.get(x, 0) + 1
# 2) defaultdict(int)
from collections import defaultdict
cnt = defaultdict(int)
cnt[x] += 1
# 3) Counter — если просто считаешь
from collections import Counter
cnt = Counter(items)
Для простого подсчёта частот Counter(items) — самый короткий. Если логика сложнее инкремента — defaultdict(int). Если без импортов — get.
8
cnt[x] = cnt.get(x, 0) + 1 — и никаких импортов.
Ваш ответ
Войдите, чтобы ответить на вопрос.