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

Python计算字典内日期列表相邻间隔平均值代码错误排查

代码错误原因
  • 循环索引逻辑错误:遍历用了range(0, len(k)),当i=0时,k[i-1]实际取到的是列表最后一个元素,会额外计算「最后一个日期减第一个日期」的错误差值。
  • 总间隔时长变量初始化位置错误:y = timedelta(days=0)写在for循环内部,每次遍历都会重置总时长为0,最终y只会保留最后一次循环计算的间隔值,而非所有间隔的总和。
  • 平均间隔的分母错误:长度为n的日期序列,相邻间隔的数量是n-1,原代码直接除以n,会导致计算结果比实际值偏小。
  • 字典更新位置错误:dicts.update({j:score})写在内部循环里,每计算一次间隔就覆盖一次字典值,最终存储的是最后一次循环的计算结果,你测试的10008条目最终取到的就是最后一个间隔101天除以3的结果33天+16小时,和你遇到的错误输出完全吻合。
修正后的实现代码
from datetime import timedelta
import datetime

my_dict = {
    '001':[datetime.date(2014, 7, 29), datetime.date(2014, 8, 1), datetime.date(2014, 8, 5), datetime.date(2014, 8, 13)],
    '10008':[datetime.date(2012,11,25), datetime.date(2013,3,30), datetime.date(2013,7,9)]
}

for key, date_list in my_dict.items():
    # 日期数小于2无有效间隔,可根据需求调整默认值
    if len(date_list) < 2:
        my_dict[key] = timedelta(0)
        continue
    total_delta = timedelta(0)
    # 遍历到倒数第二个元素即可,计算和下一个日期的间隔
    for i in range(len(date_list)-1):
        delta = date_list[i+1] - date_list[i]
        total_delta += delta
    # 平均间隔=总间隔/间隔数量
    avg_delta = total_delta / (len(date_list)-1)
    my_dict[key] = avg_delta

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:18:02