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

如何遍历日期值嵌套列表,按唯一日期分组累加对应数值

按日期累加嵌套列表数值实现方案

核心逻辑

你已经完成了唯一日期提取的步骤,后续只需要通过位置索引关联日期和对应数值,按日期分组累加后重组格式即可,全程保留日期首次出现的顺序,适配Excel导入的顺序要求。

实现步骤

  • 初始化累加容器:以去重后的日期为键,给每个键初始化和数值行数量等长的0值列表,用来存每一行数值的累加结果
  • 按索引遍历匹配:遍历原始日期行的每一个位置,拿到当前位置的日期后,把所有数值行在这个位置的值,累加到容器对应日期的统计项里
  • 重组结果格式:第一行放去重后的日期列表,后续逐行提取每个日期对应位置的累加值,拼成和原始结构一致的嵌套列表

完整可运行代码

data = [['20-01-22', '20-01-22', '09-09-21'],
        [10, 10, 10],
        [12, 10, 1 ]]

# 已完成的唯一日期提取逻辑
keys = data[0]
unique_dates = [] 
for x in keys:
    if x not in unique_dates:
        unique_dates.append(x)

# 计算数值行的总数量(排除第一行日期行)
value_row_num = len(data) - 1
# 初始化累加字典
sum_mapping = {date: [0]*value_row_num for date in unique_dates}

# 遍历每个日期的位置索引,完成数值累加
for pos_idx, current_date in enumerate(data[0]):
    for row_idx in range(value_row_num):
        # 数值行从索引1开始,所以取row_idx+1行对应位置的值累加
        sum_mapping[current_date][row_idx] += data[row_idx + 1][pos_idx]

# 拼接为最终目标格式
final_data = [unique_dates]
for row_idx in range(value_row_num):
    line_data = [sum_mapping[date][row_idx] for date in unique_dates]
    final_data.append(line_data)

运行后final_data的输出和预期结果完全一致:

[['20-01-22', '09-09-21'], [20, 10], [22, 1]]

提示:如果后续新增数值行,这段代码不需要修改逻辑,会自动适配行数做累加。

内容的提问来源于stack exchange,提问作者aoife

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:15:37