我想在存储计数器的字典中添加一个值:
d[key] += 1
但有时钥匙还不存在。检查密钥是否存在似乎太难看了。是否有一个漂亮的pythonic单线程 - 如果密钥存在则添加,或者如果密钥不在dict.keys中则创建值1
?
感谢
答案 0 :(得分:7)
你可以使用
d={}
key='sundar'
d[key]=d.get(key,0)+1
print d
#output {'sundar': 1}
d[key]=d.get(key,0)+1
print d
#output {'sundar': 2}
答案 1 :(得分:5)
>>> import collections
>>> d = collections.defaultdict(int)
>>> key = 'foo'
>>> d[key] += 1
>>> d
defaultdict(<type 'int'>, {'foo': 1})
>>> d[key]
1
>>> d[key] += 1
>>> d[key]
2
答案 2 :(得分:4)
您可以使用collections.Counter
- 这可以保证所有值均为1
或更高,支持各种初始化方式,并支持dict
/ {{1}的某些其他有用功能不要:
defaultdict
答案 3 :(得分:2)
collections.Counter
最适合您提供的特定用例,但对于不需要导入任何内容的更通用的解决方案,请使用 dict.setdefault()
:
d[key] = d.setdefault(key, 0) + 1