如何添加到字典值或创建(如果不存在)

时间:2014-07-17 10:58:36

标签: python python-3.x

我想在存储计数器的字典中添加一个值:

d[key] += 1

但有时钥匙还不存在。检查密钥是否存在似乎太难看了。是否有一个漂亮的pythonic单线程 - 如果密钥存在则添加,或者如果密钥不在dict.keys中则创建值1

感谢

4 个答案:

答案 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