以下是一个示例代码,演示了如何按对象分组并求和值:
from itertools import groupby
# 定义一个对象列表
objects = [
{'name': 'Apple', 'category': 'Fruit', 'quantity': 10},
{'name': 'Banana', 'category': 'Fruit', 'quantity': 5},
{'name': 'Carrot', 'category': 'Vegetable', 'quantity': 3},
{'name': 'Broccoli', 'category': 'Vegetable', 'quantity': 6},
{'name': 'Orange', 'category': 'Fruit', 'quantity': 8},
]
# 按照 category 字段对对象进行分组
objects.sort(key=lambda x: x['category'])
grouped_objects = groupby(objects, key=lambda x: x['category'])
# 遍历每个分组并求和 quantity 值
summed_values = []
for category, group in grouped_objects:
quantity_sum = sum(obj['quantity'] for obj in group)
summed_values.append({'category': category, 'quantity_sum': quantity_sum})
# 打印结果
for obj in summed_values:
print(obj)
这段代码首先定义了一个对象列表 objects
,其中每个对象都有 name
、category
和 quantity
字段。
接下来,利用 sort
函数和 groupby
函数对对象进行分组。sort
函数用于按照 category
字段对对象进行排序,以便后续的分组操作。然后,groupby
函数根据 category
字段进行分组,并返回一个迭代器。
接着,我们遍历每个分组,并利用列表推导式求和每个分组中的 quantity
值。最后,将分组的 category
和求和的 quantity
值添加到 summed_values
列表中。
最后,我们遍历 summed_values
列表,并打印每个对象的结果。
以上示例代码的输出结果将会是:
{'category': 'Fruit', 'quantity_sum': 23}
{'category': 'Vegetable', 'quantity_sum': 9}
这是根据示例对象列表按 category
字段进行分组,并求和了每个分组中的 quantity
值。
上一篇:按对象的值对链表进行排序
下一篇:按对象分组列表,除了一个字段