在 Python 中对字典中的所有值求和

在 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.
The 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.

main.py
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

发表评论