在 Python 中对字典列表中的值求和
Sum the values in a list of dictionaries in Python
对字典列表中的值求和:
- 使用生成器表达式迭代列表。
- 在每次迭代中,访问特定键的当前字典。
- 将生成器表达式传递给
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
类是该类的子类。collections
dict
该类基本上是键数对的映射。
这些值可以是任何整数(包括零和负数)。
示例中的外部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