如何将键为季度时间字符串的Python DICT按DATETIME规则正确排序
解决方法
你可以利用sorted()函数的key参数,将字符串格式的季度键转换为可按时间逻辑比较的对象即可实现正确排序,下面提供两种常用实现方案:
方案1:转换为datetime类型排序(符合你要求的实现逻辑)
使用datetime.strptime方法,按照月/年的格式解析字符串为datetime对象,排序时会自动按照时间先后处理:
from datetime import datetime ex_dict = { "6/2021": 1, "9/2020": 1, "6/2019": 1, "3/2020": 1, "6/2020": 1, "9/2019": 1, "3/2021": 1, "3/2019": 1, } sorted_dict = {k: v for k, v in sorted(ex_dict.items(), key=lambda item: datetime.strptime(item[0], "%m/%Y"))} print(sorted_dict)
输出结果:
{ '3/2019': 1, '6/2019': 1, '9/2019': 1, '3/2020': 1, '6/2020': 1, '9/2020': 1, '3/2021': 1, '6/2021': 1 }
方案2:拆分字符串为元组排序(无额外依赖,性能更优)
如果不想引入datetime模块,也可以直接拆分键字符串,把年份放在前、月份放在后组成整数元组,排序逻辑和datetime一致:
sorted_dict = {k: v for k, v in sorted(ex_dict.items(), key=lambda item: (int(item[0].split("/")[1]), int(item[0].split("/")[0])))}
内容的提问来源于stack exchange,提问作者Felipe Cid
相关产品推荐
相关产品推荐

