如何计算字典中所有值的总和?

372 投票
11 回答
573157 浏览
提问于 2025-04-16 11:07

假设我有一个字典,里面的键对应着一些整数,比如:

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())

撰写回答