如何编写Python函数实现列表内日期从最新到最早倒序排列
Python 倒序排列日期字符串函数实现
核心思路
- 给定的日期字符串格式为
日/月/年,无法直接按字符串字典序排序,需要先转换为可按时间先后比较的格式 - 排序时开启倒序开关,即可实现越新的日期排在越靠前的位置
实现方案1:基于datetime模块(推荐,带合法性校验)
该方案会自动校验日期合法性,遇到格式错误/不存在的日期会主动抛出异常,适合输入来源不可控的场景:
from datetime import datetime def sorting(date_list): # strptime将字符串按指定格式转为datetime对象,datetime本身支持大小比较 # reverse=True表示从大到小(新日期到旧日期)排列 return sorted(date_list, key=lambda x: datetime.strptime(x, "%d/%m/%Y"), reverse=True) # 测试 date_list = ["22/02/2021", "19/03/2021", "18/01/2022"] print(sorting(date_list)) # 输出:['18/01/2022', '19/03/2021', '22/02/2021']
实现方案2:字符串分割转元组(轻量无依赖)
如果可以确定所有输入日期都是合法的日/月/年格式,不需要额外校验,可以用更简单的无依赖实现:
def sorting(date_list): # 按/分割后反转顺序得到(年,月,日)的整数元组,元组天然支持按位比较 return sorted(date_list, key=lambda x: tuple(map(int, x.split('/')[::-1])), reverse=True)
注意事项
- 以上两种方案都不会修改原输入列表,会返回新的排序后列表
- 如果需要直接修改原列表,可以替换为列表自带的sort方法,传入相同的
key和reverse参数即可
内容的提问来源于stack exchange,提问作者Mehmet Güdük
相关产品推荐
相关产品推荐

