← Все вопросы

Как безопасно увеличить счётчик в словаре, если ключа ещё нет?

Задан 18 месяцев назад824 просмотров2 ответа
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 — и никаких импортов.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект