Python中如何按end_date和start_date降序对字典列表进行排序
Python 字典列表按日期字段排序方案
直接使用Python内置的sorted函数即可实现符合要求的简洁排序逻辑:
import datetime # 保留你原有的blah列表定义 result = sorted( blah, key=lambda d: ( d["end_date"] if d["end_date"] is not None else datetime.date.max, d["start_date"] ), reverse=True )
逻辑说明
- 特殊值处理:把
end_date为None的条目替换为Python内置的最大日期值datetime.date.max,保证空结束日期的条目始终排在最前列,符合降序排序规则 - 排序优先级:通过元组
(处理后的end_date, start_date)作为排序键,配合reverse=True自动实现「优先按end_date降序,end_date相同时按start_date降序」的要求 - 稳定排序特性:Python内置
sorted是稳定排序,两个条目start_date和end_date完全一致时会保留原有相对顺序,符合第三条规则要求
内容的提问来源于stack exchange,提问作者The Go Company
相关产品推荐
相关产品推荐

