Расширение словаря Python - программирование
Подтвердить что ты не робот

Расширение словаря Python

В Python раздражает, нужно ли проверять, находится ли ключ в словаре, прежде чем увеличивать его:

if key in my_dict:
  my_dict[key] += num
else:
  my_dict[key] = num

Есть ли более короткая замена для четырех строк выше?

4b9b3361

Ответ 1

Альтернативой является

my_dict[key] = my_dict.get(key, 0) + num

Ответ 2

У вас есть несколько вариантов. Мне нравится использовать Counter:

>>> from collections import Counter
>>> d = Counter()
>>> d[12] += 3
>>> d
Counter({12: 3})

Или defaultdict:

>>> from collections import defaultdict
>>> d = defaultdict(int)  # int() == 0, so the default value for each key is 0
>>> d[12] += 3
>>> d
defaultdict(<function <lambda> at 0x7ff2fe7d37d0>, {12: 3})

Ответ 4

преобразование:

if key in my_dict:
  my_dict[key] += num
else:
  my_dict[key] = num

используя setdefault:

my_dict[key] = my_dict.setdefault(key, 0) + num