如果key满足条件,则减少python字典值

时间:2016-01-31 12:29:30

标签: python

我有一个包含字符串键,整数值的python字典。如果键不是'?',我想找到值的总和。我可以像这样使用for循环找到总和。

d = {'a':20, 'b': 20, '?': 10}
sum = 0
for k in d.keys():
    if k != '?':
        sum += d[k]
print "This is my sum: " + sum

只为了野心,我真的想将其重构为reduce()函数。我捅了一下:

sum = reduce(lambda s, k: s if k == '?' else s += d[k], d.keys())

但我真的不知道自己在做什么。我确信有一个功能更好的人可以在几分钟内做到这一点。救救我?

2 个答案:

答案 0 :(得分:6)

您可以使用内置的sum()

>>> d = {'a':20, 'b': 20, '?': 10}
>>> sum(value for key, value in d.items() if key != "?") 
40

答案 1 :(得分:4)

由于键'?'只出现一次或零次,只需从总和中减去该键的值:

>>> sum(d.values()) - d.get('?', 0)
40