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

Python检查字典列表中时间区间是否重叠的思路验证

时间区间重叠检查的思路验证

你的思路完全正确,核心逻辑没问题:

  • 先按start值排序是关键操作:排序后每个区间的起始时间都不会早于前一个区间,此时只需要检查相邻区间的重叠情况,就能判断整个列表里是否存在重叠区间。
  • 比较逻辑也没问题:只要前一个区间的end时间晚于后一个区间的start时间,就说明这两个区间存在重叠。

不过你的代码可以做些优化,提升效率和实用性:

  1. 避免重复解析时间:每次循环都调用datetime.strptime会重复处理相同的时间字符串,建议先把所有时间转成datetime.time对象再排序比较。
  2. 增加最终判断逻辑:原代码只是打印单次比较结果,没有返回“是否存在重叠”的结论,可以改成直接输出最终判断。

优化后的代码示例:

from datetime import datetime

# 原始时间区间列表
slots = [{'end': '19:00', 'start': '10:00'}, {'end': '23:00', 'start': '12:15'}, {'end': '12:00', 'start': '09:15'}]

# 定义时间解析函数
def parse_time(time_str):
    return datetime.strptime(time_str, '%H:%M').time()

# 按起始时间排序
sorted_slots = sorted(slots, key=lambda x: parse_time(x['start']))

# 检查是否存在重叠
has_overlap = False
for elem, next_elem in zip(sorted_slots, sorted_slots[1:]):
    if parse_time(elem['end']) > parse_time(next_elem['start']):
        has_overlap = True
        break  # 找到重叠后直接终止循环

print(f"是否存在时间区间重叠: {has_overlap}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:50:24