我有一个空字典,我正在使用update方法进行操作。我使用变量作为键,+1
作为值。见下文:
myDict, var = {}, 10
myDict.update( { var : +1 } )
让我说我执行两次,我期待myDict = {10 : 2}
。相反,它是{10 : 1}
。
我知道我可以通过这样做直接解决这个问题:
myDict[var] += 1
print (myDict)
{10 : 2}
但是,var
并非总是10
我想增加,var
可以是任何数字。如果它是除10
以外的任何数字,我会得到一个KeyError
,因为字典中不存在该键。
如何使用变量作为键来更新字典,并将值设置为1
,但如果密钥已存在于myDict
中,那么是否增加相应的值?
我已经通过尝试和除了声明完成了这个,但我觉得它不是非常Pythonic。
try:
myDict[var] += 1
except:
myDict.update( { var : 1 } )
这样,它会尝试将var
的值增加1。如果密钥不存在,则将更新myDict
而不是创建密钥并将值设置为1。还有更好的方法吗?
答案 0 :(得分:3)
你要求一个柜台; Python在collections
模块中为您提供了这个:
from collections import Counter
c = Counter()
var = 10
c.update({var: 1})
print(c) # Counter({10: 1})
c.update({var: 1})
print(c) # Counter({10: 2})
如果您愿意,可以使用d[var] = d.get(var, 0) + 1
使用普通字典获得相同的结果,但在我看来,Counter
选项在这种情况下更清晰。