Python如何从自定义Date对象列表中查找最早的日期
自定义Date类列表筛选最早日期异常问题排查与解决
问题背景
需求为从自定义Date类的对象列表中筛选出最早的日期,每个Date对象包含year、month、day三个属性,且自定义类已经实现了各类比较运算符。
错误尝试与现象
- 最初实现代码为
return min(dates, key=lambda x: x.year),该代码在存在同年份日期时会直接返回列表中靠前的日期而非实际更早的日期,不符合预期:例如同是1988年的1988 10 10和1988 09 03,会错误返回前者。 - 后续先后尝试两种优化方案仍无法得到正确结果:
- 嵌套调用min函数按年、月、日逐级筛选
- 直接调用默认比较逻辑
return min(dates)
根因定位
日期数据从文本文件解析而来,最初的处理逻辑是逐行拆分字符串后直接传入Date构造函数生成对象,拆分得到的年、月、日未转换为int类型,程序一直执行字符串比较而非数值比较,因此结果异常。
解决方案
解析日期字符串时,先将拆分得到的年、月、日参数转为int类型后,再创建Date对象即可解决问题。
内容的提问来源于stack exchange,提问作者Linus
相关产品推荐
相关产品推荐

