在 Python 中对字典中的所有值求和
Sum all values in a dictionary in Python
使用该sum()
函数对字典中的所有值求和,例如
total = sum(my_dict.values())
. 字典上的values()
方法将返回字典值的视图,可以直接将其传递给
sum()
函数以获取总和。
my_dict = { 'one': 1, 'two': 2, 'three': 3, } total = sum(my_dict.values()) print(total) # 👉️ 6 # 👇️ [1, 2, 3] print(list(my_dict.values()))
我们使用该sum()
函数对字典中的所有值求和。
dict.values方法返回字典
值的新视图。
sum函数接受一个可迭代对象,从左到右对其项目求和并返回总数。
print(sum([1, 2, 3])) # 👉️ 6
该sum
函数采用以下 2 个参数:
姓名 | 描述 |
---|---|
可迭代的 | 要求和其项目的可迭代对象 |
开始 | start 对可迭代对象的值和项目求和。sum 默认为0 (可选) |
请注意,可选start
参数的值默认为0
. 这意味着将此方法与空字典一起使用将返回0
.
my_dict = {} total = sum(my_dict.values()) print(total) # 👉️ 0 # 👇️ [] print(list(my_dict.values()))
另一种方法是使用reduce()
函数。
from functools import reduce my_dict = { 'one': 1, 'two': 2, 'three': 3, } total = reduce( lambda acc, current: acc + current, my_dict.values() ) print(total) # 👉️ 6
在这种情况下绝对不需要使用reduce()
函数,因为它比将字典值的视图直接传递给函数要冗长得多sum()
。
reduce
函数采用以下 3 个参数:
姓名 | 描述 |
---|---|
功能 | A function that takes 2 parameters – the accumulated value and a value from the iterable. |
iterable | Each element in the iterable will get passed as an argument to the function. |
initializer | An optional initializer value that is placed before the items of the iterable in the calculation. |
lambda
function in the example takes the accumulated value and the current value as parameters and returns the sum of the two.If we provide a value for the initializer
argument, it is placed before the
items of the iterable in the calculation.
from functools import reduce my_dict = { 'one': 1, 'two': 2, 'three': 3, } total = reduce( lambda acc, current: acc + current, my_dict.values(), 0 ) print(total) # 👉️ 6
In the example, we passed 0
for the initializer argument, so the value of the
accumulator
will be 0
on the first iteration.
The value of the accumulator
would get set to the first element in the
iterable if we didn’t pass a value for the initializer
.
如果iterable
为空并且initializer
提供了,initializer
则返回。
from functools import reduce my_dict = {} total = reduce( lambda acc, current: acc + current, my_dict.values(), 0 ) print(total) # 👉️ 0