You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:51:04