Расширение словаря Python В Python раздражает, нужно ли проверять, находится ли ключ в словаре, прежде чем увеличивать его: if key in my_dict: my_dict[key] += num else: my_dict[key] = num Есть ли более короткая замена для четырех строк выше? Ответ 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}) Ответ 3 То, что вы хотите, называется defaultdict См. http://docs.python.org/library/collections.html#collections.defaultdict Ответ 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
Ответ 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})
Ответ 3 То, что вы хотите, называется defaultdict См. http://docs.python.org/library/collections.html#collections.defaultdict
Ответ 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