在Python中,在增加密钥之前必须首先检查密钥是否在字典中是很烦人的:
if key in my_dict:
my_dict[key] += num
else:
my_dict[key] = num
以上四行是否有较短的替代品?
答案 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})
>>> 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)
你想要什么叫做defaultdict
请参阅http://docs.python.org/library/collections.html#collections.defaultdict
答案 3 :(得分:8)
变换:
if key in my_dict:
my_dict[key] += num
else:
my_dict[key] = num
进入以下内容
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