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

如何将日期与时间字符串列表转换为日期为键的字典(处理跨天时间)

解决日期-时间分组字典的生成问题

先明确下需求核心:我们要把给定的时间列表按日期分组,同一个日期下的时间是递增顺序的;一旦遇到时间回退(当前时间比前一个时间小),就自动切换到日期列表里的下一个日期作为键。

实现思路

  1. 先初始化结果字典,给每个日期对应一个空列表;
  2. 用一个索引变量记录当前正在使用的日期位置,默认从第一个日期开始;
  3. 遍历时间列表时,记录前一个时间用于比较:
    • 第一个时间直接加入当前日期的列表;
    • 后续每个时间和前一个对比,如果当前时间更小,说明要切换到下一个日期;
    • 把当前时间加入对应日期的列表,再更新前一个时间的值。

Python代码实现

dates = ['2019/07/27', '2019/07/29']
times = ['06:55:40', '06:55:41', '08:48:33', '08:48:33', '09:02:54', '09:02:54', '09:02:54', '10:02:19', '10:02:20', '07:34:52', '07:34:52', '07:35:03', '09:22:19', '09:22:19', '09:22:19', '09:22:23', '11:17:24', '11:17:27', '13:24:57']

# 初始化结果字典,每个日期对应空列表
result = {date: [] for date in dates}
current_date_idx = 0
prev_time = None

for time in times:
    if prev_time is None:
        # 第一个时间直接加入当前日期的列表
        result[dates[current_date_idx]].append(time)
        prev_time = time
    else:
        # 时间回退时切换到下一个日期
        if time < prev_time:
            current_date_idx += 1
        # 将当前时间加入对应日期列表
        result[dates[current_date_idx]].append(time)
        prev_time = time

print(result)

运行结果

执行代码后会得到你期望的输出:

{'2019/07/27': ['06:55:40', '06:55:41', '08:48:33', '08:48:33', '09:02:54', '09:02:54', '09:02:54', '10:02:19', '10:02:20'], '2019/07/29': ['07:34:52', '07:34:52', '07:35:03', '09:22:19', '09:22:19', '09:22:19', '09:22:23', '11:17:24', '11:17:27', '13:24:57']}

小提示

  • 这里直接用字符串比较时间是可行的,因为HH:MM:SS格式的字符串,字典序和时间先后顺序完全一致;
  • 如果你的日期列表长度可能不够(比如时间分组数比日期数多),可以额外加个边界判断,避免索引越界报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:46:12