我有一个包含字符串键,整数值的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())
但我真的不知道自己在做什么。我确信有一个功能更好的人可以在几分钟内做到这一点。救救我?
答案 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