在Python中如何从字典值中减去?

在Python中如何从字典值中减去?,python,Python,我必须从字典值中减去 list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1} string = 'ikjoosgx' for letter in string: I NEED TO DECREASE list1 key of same name as letter VALUE BY 1. DIPSIT! 这很简单: d[key] -= 1 只需迭代关键点: for letter in string:

我必须从字典值中减去

list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string = 'ikjoosgx'
for letter in string:
I NEED TO DECREASE list1 key of same name as letter VALUE BY 1. DIPSIT!
这很简单:

d[key] -= 1
只需迭代关键点:

for letter in string:
    d[letter] -= 1
请注意,不要将
string
用作变量名,因为它也是标准模块的名称

如果其中一个字母不在字典里,这就行不通了。在这种情况下,可以将
try/except
块放入循环中

for letter in my_string:
    try:
        list1[letter] -= 1
    except KeyError:
        pass  # your error handling goes here
如果需要默认值,可以将
pass
替换为:

list1[letter] = default_value

或者你可以直接使用。

如果我答对了你的问题,你想要这个:

list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string = 'ikjoosgx'
for letter in string:
    if letter in list1:
        list1[letter] -= 1

print list1
>>> {'q': 1, 's': 0, 'z': 1, 'i': 0, 'x': 0, 'k': 0, 'j': 0, 'o': 0}

另一种解决方案,这次使用的是好的旧版本:


你能详细说明一下你在这两个小时里试过的方法吗?但是伙计,这不管用,我已经打了个平手=(好的,我会在第二秒用AnswerWare再次尝试brb!字符串中有一个'g',它不是列表1中的键,因此您将得到一个KeyErrorHey,没问题!Thx,它工作了。如果不是,我们可以始终使用默认数字。因此,是的,它现在似乎工作正常=)我认为最好将
try/except
放在循环中。如何处理字符串中的字母“g”?“g”不是dict中的键!正如其他人所说,使用try-catch语句
for letter in string:
    list1[letter] = list1[letter] - 1
list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string = 'ikjoosgx'
for letter in string:
    if letter in list1:
        list1[letter] -= 1

print list1
>>> {'q': 1, 's': 0, 'z': 1, 'i': 0, 'x': 0, 'k': 0, 'j': 0, 'o': 0}
list1 = {'i': 1, 'k': 1, 'j': 1, 'o': 2, 'q': 1, 's': 1, 'x': 1, 'z': 1}
string1 = 'ikjoosgx'
for letter in string1:
    list1[letter] = list1.setdefault(letter, 0) - 1