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

如何按自定义格式日期值对Python字典进行排序?

按自定义日期格式排序Python字典

方法一:利用已排序的日期列表索引排序

如果你已经有了排序后的日期列表,直接通过日期在列表中的索引位置作为排序依据即可:

  1. 定义原始字典和已排序的日期列表
original_dict = {'Charles':'01/02-21:00','Martin':'01/03-22:00','David':'01/02-19:00'}
sorted_dates = ['01/02-19:00','01/02-21:00','01/03-22:00']
  1. 对字典的键值对按日期索引排序,再转为有序字典(Python 3.7+ 普通字典默认保留插入顺序)
sorted_items = sorted(original_dict.items(), key=lambda x: sorted_dates.index(x[1]))
sorted_dict = dict(sorted_items)
print(sorted_dict)
# 输出: {'David': '01/02-19:00', 'Charles': '01/02-21:00', 'Martin': '01/03-22:00'}

方法二:直接解析自定义日期格式排序

如果没有预先准备排序后的日期列表,可将特殊格式的日期字符串解析为可比较的datetime对象,再完成排序:

  1. 编写日期解析函数,把day/month-hour:minute格式转为datetime对象
from datetime import datetime

def parse_custom_date(date_str):
    date_part, time_part = date_str.split('-')
    day, month = date_part.split('/')
    hour, minute = time_part.split(':')
    # 年份不影响排序,可任意指定
    return datetime(2024, int(month), int(day), int(hour), int(minute))
  1. 基于解析后的日期对字典排序
sorted_dict = dict(sorted(original_dict.items(), key=lambda x: parse_custom_date(x[1])))
print(sorted_dict)
# 输出同样符合预期

注意事项

  • Python 3.7及以上版本的普通字典会保留插入顺序,所以直接用dict()转换排序后的键值对列表即可得到有序字典;如果是更低版本,需要使用collections.OrderedDict。
  • 若sorted_dates列表很长,建议先把日期转成索引映射字典(date_index = {date:i for i,date in enumerate(sorted_dates)}),排序时用key=lambda x: date_index[x[1]],避免多次调用index()带来的性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:10:23