使用 - =时,字典值未按预期更新

sta*_*n12 3 python string counter dictionary python-2.7

我有一本字典和一个字:

check = {'a': 3, 'e': 1, 'p': 2, 'r': 1, 'u': 1, 't': 1}
word = 'rapturerererer'
Run Code Online (Sandbox Code Playgroud)

如果所有来信word都在,我打算进行测试check.所以我需要保持所有用完的字母的运行计数,并检查最后是否有任何负面信息.

我有代码,但它总是将值限制在0并且永远不会返回负值:

for letter in word:
    if check.get(letter):
        check[letter] -= 1
print(check)

{'a': 2, 'p': 1, 'r': 0, 'e': 0, 't': 0, 'u': 0}
Run Code Online (Sandbox Code Playgroud)

我期待的是这个:

{'a': 2, 'p': 1, 'r': -5, 'e': -4, 't': 0, 'u': 0}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么它在0处停止这些值吗?

Joh*_*ica 7

if check.get(letter):
    check[letter] -= 1
Run Code Online (Sandbox Code Playgroud)

if check.get(letter)如果letter失踪,不仅会失败; 如果dict中的值是"falsy",它也会失败.None是假的,也是0.一旦它命中0测试失败并且不再发生减量.

in改用.

if letter in check:
    check[letter] -= 1
Run Code Online (Sandbox Code Playgroud)