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

ned*_*orf 209 python hash dictionary sum

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

d = {'key1': 1,'key2': 14,'key3': 47}
Run Code Online (Sandbox Code Playgroud)

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

phi*_*hag 404

正如您所期望的那样:

sum(d.values())
Run Code Online (Sandbox Code Playgroud)

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

  • @LancelotHolmes是的,但是在内存中构建一个列表,因此可以更慢/更接近大型词典的资源限制.因此,在讨论Python 2时,这个答案说"你*可能*想要使用"而不是"你*必须*使用". (7认同)

mar*_*eau 66

在Python 2中,您可以避免使用itervalues()字典方法创建所有值的临时副本,该方法返回字典键的迭代器:

sum(d.itervalues())
Run Code Online (Sandbox Code Playgroud)

在Python 3中,您可以使用,d.values()因为该方法已更改为执行此操作(并且itervalues()已删除,因为不再需要它).

为了更容易编写始终迭代字典键值的版本无关代码,实用程序函数可能会有所帮助:

import sys

def itervalues(d):
    return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())

sum(itervalues(d))
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,虽然这不适用于python 3. (5认同)

vz0*_*vz0 12

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

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


小智 8

sum(d.values())

  • “d”-> 你的字典变量


Kal*_*ala 6

d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
Run Code Online (Sandbox Code Playgroud)

你可以使用 for 循环


Pra*_*ada 5

我认为sum(d.values())这是获得总和的最有效方法。

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

reduce(lambda x,y:x+y,d.values())
Run Code Online (Sandbox Code Playgroud)


Tam*_*n S 5

使用 sum() 对字典中的值求和。

调用 dict.values() 返回字典 dict 的值。使用 sum(values) 返回上一步的值的总和。

d = {'key1':1,'key2':14,'key3':47}
values = d.values()
#Return values of a dictionary    
total = sum(values)
print(total)
Run Code Online (Sandbox Code Playgroud)