You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python3字典按日期键排序的实现方法

按日期排序字典中的日期键值对

没问题,这事儿用Python的datetime模块配合排序函数就能轻松搞定,我分几种常用场景给你说明,完全支持自定义日期格式:

核心思路

日期字符串直接按字符串排序很容易踩坑(比如非YYYY-MM-DD格式的话,字符串顺序和实际日期逻辑顺序可能不一致),所以我们需要把日期字符串转换成datetime对象,以此作为排序的可靠依据。


1. 基础场景:默认YYYY-MM-DD格式排序

刚好你例子里的日期就是YYYY-MM-DD格式,直接用下面的代码就行:

from datetime import datetime

# 你的原始字典
my_dictionary = {"dates": {"2020-01-01": "something 1", "2019-04-20": "something 2", "2020-03-15": "something 3", "2019-12-31": "something 4"}}

# 按日期升序排序,返回排序后的键值对列表
sorted_date_items = sorted(my_dictionary["dates"].items(), key=lambda item: datetime.strptime(item[0], "%Y-%m-%d"))

# 如果需要降序排序,加上reverse=True参数即可
sorted_date_items_desc = sorted(my_dictionary["dates"].items(), key=lambda item: datetime.strptime(item[0], "%Y-%m-%d"), reverse=True)

2. 自定义日期格式排序

如果你的日期是其他格式(比如DD/MM/YYYYMM-DD-YYYYJan-20-2019这类),只需要修改strptime里的格式字符串就行:

举个DD/MM/YYYY格式的例子:

# 示例自定义格式的字典
custom_format_dict = {"dates": {"01/01/2020": "something 1", "20/04/2019": "something 2", "15/03/2020": "something 3"}}

# 用"%d/%m/%Y"对应DD/MM/YYYY格式排序
sorted_custom_items = sorted(custom_format_dict["dates"].items(), key=lambda item: datetime.strptime(item[0], "%d/%m/%Y"))

给你列几个常用的格式符参考:

  • %Y: 4位数年份(比如2020)
  • %m: 2位数月份(比如01)
  • %d: 2位数日期(比如01)
  • %b: 月份缩写(比如Jan、Feb)

3. 得到排序后的字典(Python 3.7+)

如果你想要一个保留排序顺序的字典,注意Python 3.7及以上版本的字典才会严格保留插入顺序,所以可以把排序后的键值对列表直接转成字典:

# 转成排序后的字典
sorted_date_dict = dict(sorted_date_items)

这样你就得到了完全按日期排序后的字典啦!

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

火山引擎 最新活动