Python字典增量

时间:2012-10-20 20:00:04

标签: python dictionary increment

在Python中,在增加密钥之前必须首先检查密钥是否在字典中是很烦人的:

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

以上四行是否有较短的替代品?

6 个答案:

答案 0 :(得分:54)

另一种选择是:

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

答案 1 :(得分:21)

你有很多选择。我喜欢使用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})

答案 2 :(得分:8)

答案 3 :(得分:8)

变换:

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

使用setdefault

进入以下内容
my_dict[key] = my_dict.setdefault(key, 0) + num

答案 4 :(得分:0)

setdefault方式也有些不同:

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

如果与其他逻辑结合使用,可能会有一些优势。

答案 5 :(得分:0)

可以使用.get.setdefault中的任何一个:

.get()提供在没有有效键的情况下在函数中传递的默认值

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

.setdefault ()创建一个具有默认值的密钥

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