以下是一个示例代码,用于按类别对列表中的元素进行求和,并保留每个类别中的最大值。
# 初始列表
items = [
{'category': 'A', 'value': 10},
{'category': 'B', 'value': 5},
{'category': 'A', 'value': 15},
{'category': 'B', 'value': 8},
{'category': 'C', 'value': 20},
{'category': 'A', 'value': 7}
]
# 创建一个字典用于保存每个类别的总和和最大值
result = {}
for item in items:
category = item['category']
value = item['value']
# 如果类别不存在于结果字典中,则将其添加,并将值初始化为当前元素的值
if category not in result:
result[category] = {'sum': value, 'max': value}
else:
# 如果类别已存在于结果字典中,则更新总和,并比较当前元素的值是否大于最大值
result[category]['sum'] += value
if value > result[category]['max']:
result[category]['max'] = value
print(result)
输出结果如下:
{'A': {'sum': 32, 'max': 15}, 'B': {'sum': 13, 'max': 8}, 'C': {'sum': 20, 'max': 20}}
以上代码通过遍历列表中的元素,将每个类别的总和和最大值保存在结果字典中。如果某个类别已经存在于结果字典中,则更新总和并比较当前元素的值是否大于最大值。如果类别不存在于结果字典中,则将其添加,并将值初始化为当前元素的值。最终输出结果字典。