如何对值为字典列表的字典按Date字段升序排序并输出字典
按Date字段对嵌套字典升序排序的解决方案
没问题,我来帮你搞定这个按日期排序字典的需求!要实现你想要的效果,核心是把字符串格式的日期转换成可比较的datetime对象,然后基于这个对字典的键值对进行排序,最后重新构建有序字典。
完整代码实现
from datetime import datetime # 你的原始字典 myDict = { 'First': [{'Name':'Raj','Date':'28-March-2019 09:30'}], 'Second': [{'Name':'Ajay','Date':'12-April-2020 07:25'}], 'Third': [{'Name':'Jaya','Date':'12-April-2019 09:25'}] } # 对字典条目按Date字段升序排序 sorted_items = sorted( myDict.items(), # 提取每个条目里的Date字符串,转换为datetime对象作为排序依据 key=lambda entry: datetime.strptime(entry[1][0]['Date'], '%d-%B-%Y %H:%M') ) # 构建排序后的有序字典(Python 3.7+ 原生dict默认有序) sorted_myDict = dict(sorted_items) # 验证输出 print(sorted_myDict)
代码解释
- 日期转换:
datetime.strptime(entry[1][0]['Date'], '%d-%B-%Y %H:%M')是关键步骤——它把"28-March-2019 09:30"这种格式的字符串转成datetime对象,这样程序才能正确判断日期的先后顺序。其中%d是日,%B是完整月份名称(比如March),%Y是4位年份,%H:%M是时分格式。 - 排序逻辑:
sorted()函数会根据我们指定的key对字典的键值对列表进行升序排序,正好符合你的需求。 - 有序字典:Python 3.7及以上版本的原生
dict已经会保留插入顺序,所以用dict(sorted_items)就能直接得到有序的结果。如果你的Python版本低于3.7,可以改用collections.OrderedDict:from collections import OrderedDict sorted_myDict = OrderedDict(sorted_items)
输出结果
运行代码后,你会得到完全符合期望的排序后的字典:
{ 'First': [{'Name': 'Raj', 'Date': '28-March-2019 09:30'}], 'Third': [{'Name': 'Jaya', 'Date': '12-April-2019 09:25'}], 'Second': [{'Name': 'Ajay', 'Date': '12-April-2020 07:25'}] }
内容的提问来源于stack exchange,提问作者Us86
相关产品推荐
相关产品推荐

