我必须从字典值中减去。
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!
    我必须从字典值中减去。
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!
    for letter in my_string:
    list1[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
或者您可以只使用Ocaso 的解决方案。
如果我得到你的问题,你想要这个:
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}
    另一个解决方案,这次使用旧的setdefault:
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
    很简单:
d[key] -= 1
只需迭代键:
for letter in string:
    d[letter] -= 1
    for letter in string:
    list1[letter] = list1[letter] - 1