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

时间:2011-02-02 23:01:45

标签: python dictionary hash sum

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

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

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

11 个答案:

答案 0 :(得分:356)

正如您所期望的那样:

sum(d.values())

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

答案 1 :(得分: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模块所做的。

答案 2 :(得分:12)

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

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

答案 3 :(得分:3)

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

您可以使用for循环

答案 4 :(得分:2)

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

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

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

答案 5 :(得分:1)

sum(d.values())-“ d”->您的字典变量

答案 6 :(得分:0)

. 嗨Reza,我在python3中尝试了无效的方法。即使我尝试了sum(d.values都没有用。PFA还是一样的

答案 7 :(得分:0)

您可以为此考虑“ for循环”:

  d = {'data': 100, 'data2': 200, 'data3': 500}
  total = 0
  for i in d.values():
        total += i

总数= 800

答案 8 :(得分:0)

最简单/最愚蠢的解决方案:

https://trinket.io/python/a8a1f25353

d = {'key1': 1,'key2': 14,'key3': 47}
s = 0
for k in d:
    s += d[k]

print(s)

或者如果你想要更高级:

https://trinket.io/python/5fcd379536

import functools

d = {'key1': 1,'key2': 14,'key3': 47}
s = functools.reduce(lambda acc,k: acc+d[k], d, 0)

print(s)

答案 9 :(得分:-1)

phihag的答案(和类似的答案)在python3中不起作用。

对于python 3:

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

答案 10 :(得分:-2)

您可以获取字典中所有值的生成器,然后将其转换为列表,然后使用sum()函数获取所有值的总和。

示例:

c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}

sum(list(c.values()))