Flask中Python字典操作:对同日期的pnl值求和实现方法
Flask场景下合并相同date的字典并求和pnl值
方法一:基础字典遍历(无额外依赖,轻量高效)
直接用临时字典累计相同date的pnl值,逻辑简单,适配大多数Flask轻量场景:
original_list = [{'pnl': 10, 'date': 2}, {'pnl': 30, 'date': 2}, {'pnl': 20, 'date': 3}] temp_dict = {} for item in original_list: date = item['date'] pnl = item['pnl'] # 累计相同date的pnl值 if date in temp_dict: temp_dict[date] += pnl else: temp_dict[date] = pnl # 转换为目标格式的列表 result = [{'pnl': value, 'date': key} for key, value in temp_dict.items()] print(result) # 输出: [{'pnl': 40, 'date': 2}, {'pnl': 20, 'date': 3}]
方法二:使用itertools.groupby(标准库实现)
借助itertools.groupby分组,但需先按date排序(groupby仅对连续相同元素分组):
from itertools import groupby original_list = [{'pnl': 10, 'date': 2}, {'pnl': 30, 'date': 2}, {'pnl': 20, 'date': 3}] # 先按date字段排序 sorted_list = sorted(original_list, key=lambda x: x['date']) result = [] # 按date分组后求和pnl for date, group in groupby(sorted_list, key=lambda x: x['date']): total_pnl = sum(item['pnl'] for item in group) result.append({'pnl': total_pnl, 'date': date}) print(result) # 输出目标列表
方法三:使用pandas(大数据量场景更高效)
如果项目已引入pandas,数据聚合操作会更简洁:
import pandas as pd original_list = [{'pnl': 10, 'date': 2}, {'pnl': 30, 'date': 2}, {'pnl': 20, 'date': 3}] # 转换为DataFrame df = pd.DataFrame(original_list) # 按date分组求和,再转回字典列表格式 result = df.groupby('date')['pnl'].sum().reset_index().to_dict('records') print(result) # 输出目标列表
内容的提问来源于stack exchange,提问作者Mt Khalifa
相关产品推荐
相关产品推荐

