dict.update()没有按预期工作

时间:2017-02-25 16:15:55

标签: python python-3.x dictionary increment

我有一个空字典,我正在使用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。还有更好的方法吗?

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选项在这种情况下更清晰。