如何将字典中的所有值相加?

问题描述 投票:182回答:6

假设我有一个字典,其中键映射到整数,如:

d = {'key1': 1,'key2': 14,'key3': 47}

是否有一种语法简约的方法来返回d中的值的总和 - 即。 62在这种情况下?

python dictionary hash sum
6个回答
368
投票

正如您所期望的那样:

sum(d.values())

在Python <3中,您可能希望使用itervalues(它不构建临时列表)。


66
投票

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

这基本上是本杰明彼得森的six模块所做的。


12
投票

当然有。这是一种对字典值进行求和的方法。

>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62

3
投票
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)

你可以用for循环来做


2
投票

我觉得sum(d.values())是获得总和的最有效方式。

您还可以尝试使用reduce函数来计算总和以及lambda表达式:

reduce(lambda x,y:x+y,d.values())

1
投票

sum(d.values()) - “d” - >你的词典变量

© www.soinside.com 2019 - 2024. All rights reserved.