对 Python 字典列表中的值求和

在 Python 中对字典列表中的值求和

Sum the values in a list of dictionaries in Python

对字典列表中的值求和:

  1. 使用生成器表达式迭代列表。
  2. 在每次迭代中,访问特定键的当前字典。
  3. 将生成器表达式传递给sum()函数。
主程序
from collections import Counter # ✅ sum values in list of dictionaries for specific dict key list_of_dicts = [ {'name': 'Alice', 'salary': 100}, {'name': 'Bob', 'salary': 100}, {'name': 'Carl', 'salary': 100}, ] total = sum(d['salary'] for d in list_of_dicts) print(total) # 👉️ 300 # --------------------------------------------- # ✅ sum values in list of dictionaries for all dict keys list_of_dicts_2 = [ {'id': 1, 'salary': 100}, {'id': 2, 'salary': 100}, {'id': 3, 'salary': 100}, ] my_dict = Counter() for d in list_of_dicts_2: for key, value in d.items(): my_dict[key] += value # 👇️ Counter({'salary': 300, 'id': 6}) print(my_dict) total = sum(my_dict.values()) print(total) # 👉️ 306

我们使用生成器表达式来迭代字典列表。

主程序
list_of_dicts = [ {'name': 'Alice', 'salary': 100}, {'name': 'Bob', 'salary': 100}, {'name': 'Carl', 'salary': 100}, ] total = sum(d['salary'] for d in list_of_dicts) print(total) # 👉️ 300
生成器表达式用于对每个元素执行一些操作,或者选择满足条件的元素子集。

在每次迭代中,我们访问特定的字典键以获取相应的值并返回结果。

sum函数接受一个可迭代对象,从左到右对其项目求和并返回总数。

sum函数采用以下 2 个参数:

姓名 描述
可迭代的 要求和其项目的可迭代对象
开始 start对可迭代对象的值和项目求和。sum默认为0(可选)

如果您需要对所有字典键的字典列表中的值求和,请使用Counter该类。

主程序
from collections import Counter list_of_dicts_2 = [ {'id': 1, 'salary': 100}, {'id': 2, 'salary': 100}, {'id': 3, 'salary': 100}, ] my_dict = Counter() for d in list_of_dicts_2: for key, value in d.items(): my_dict[key] += value # 👇️ Counter({'salary': 300, 'id': 6}) print(my_dict) total = sum(my_dict.values()) print(total) # 👉️ 306

模块中
Counter
类是该类的子
类。
collectionsdict

该类基本上是键数对的映射。

这些值可以是任何整数(包括零和负数)。

示例中的外部for循环遍历字典列表。

内部循环遍历当前字典的项目。

dict.items方法返回字典
项((键,值)对)的新视图。

主程序
list_of_dicts_2 = [ {'id': 1, 'salary': 100}, {'id': 2, 'salary': 100}, {'id': 3, 'salary': 100}, ] # 👇️ dict_items([('id', 1), ('salary', 100)]) print(list_of_dicts_2[0].items())

Counter在其中一个嵌套字典的每次迭代中,我们更新中心对象中的键计数对。

结果是字典列表中所有字典键值的总和。

这是完整的代码片段。

主程序
from collections import Counter list_of_dicts_2 = [ {'id': 1, 'salary': 100}, {'id': 2, 'salary': 100}, {'id': 3, 'salary': 100}, ] my_dict = Counter() for d in list_of_dicts_2: for key, value in d.items(): my_dict[key] += value # 👇️ Counter({'salary': 300, 'id': 6}) print(my_dict) total = sum(my_dict.values()) print(total) # 👉️ 306