如何计算字典中所有值的总和?
假设我有一个字典,里面的键对应着一些整数,比如:
d = {'key1': 1,'key2': 14,'key3': 47}
有没有一种简单的写法,可以直接返回这个字典中所有值的总和——也就是在这个例子中,结果是62
?
11 个回答
20
当然有办法。这里有一种方法可以对字典中的值进行求和。
>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
72
在Python 2中,你可以通过使用itervalues()
这个字典方法来避免创建一个临时的所有值的副本,这个方法会返回一个字典值的迭代器:
sum(d.itervalues())
而在Python 3中,你只需要使用d.values()
就可以了,因为这个方法已经被修改为直接返回值(而itervalues()
被移除了,因为不再需要它)。
为了更方便地编写不依赖于版本的代码,始终遍历字典的值,一个工具函数会很有帮助:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
这基本上就是Benjamin Peterson的six
模块所做的事情。
727
就像你想的那样:
sum(d.values())