如何从Python中减去字典值?

时间:2013-01-29 08:53:26

标签: 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!

5 个答案:

答案 0 :(得分:1)

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's solution

答案 1 :(得分: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}

答案 2 :(得分:1)

另一种解决方案,这次是使用旧的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

答案 3 :(得分:0)

很简单:

d[key] -= 1

只需重复按键:

for letter in string:
    d[letter] -= 1

答案 4 :(得分:0)

for letter in string:
    list1[letter] = list1[letter] - 1