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

Python中如何按字典值内的日期时间字段对字典排序

问题

我有如下结构的字典:

{'user_0': [['item_805696', '2021-02-11 13:03:42'],
  ['item_386903', '2021-02-11 13:03:52'],
  ['item_3832', '2021-02-11 13:04:07'],
  ['item_849824', '2021-02-11 13:05:04']],
'user_1': [['item_97057', '2021-02-11 13:03:42'],
  ['item_644971', '2021-02-11 13:09:32'],
  ['item_947129', '2021-02-11 13:15:27'],
  ['item_58840', '2021-02-11 13:16:11'],
  ['item_640213', '2021-02-11 13:17:40']],
...
}

我希望按照字典值中每个子元素的第二个值(日期时间)对字典的值进行排序,请问该如何实现?

解决方案

可以遍历字典的每个键值对,对每个用户对应的列表使用sorted()函数,以子列表的第二个元素(日期时间字符串)作为排序依据。由于你的日期时间格式是YYYY-MM-DD HH:MM:SS,这种格式的字符串可直接按字典序比较,无需额外转换;如果需要更严谨的时间逻辑处理,也可以转为datetime对象。

基础实现代码

# 假设你的字典名为user_items
user_items = {
    'user_0': [['item_805696', '2021-02-11 13:03:42'],
               ['item_386903', '2021-02-11 13:03:52'],
               ['item_3832', '2021-02-11 13:04:07'],
               ['item_849824', '2021-02-11 13:05:04']],
    'user_1': [['item_97057', '2021-02-11 13:03:42'],
               ['item_644971', '2021-02-11 13:09:32'],
               ['item_947129', '2021-02-11 13:15:27'],
               ['item_58840', '2021-02-11 13:16:11'],
               ['item_640213', '2021-02-11 13:17:40']]
}

# 对每个用户的列表按日期时间升序排序
for user, items in user_items.items():
    user_items[user] = sorted(items, key=lambda x: x[1])

# 查看排序后的结果
for user, items in user_items.items():
    print(f"{user}:")
    for item in items:
        print(f"  {item}")

扩展说明

  • 若需要降序排序,只需添加reverse=True参数:
    user_items[user] = sorted(items, key=lambda x: x[1], reverse=True)
    
  • 若日期时间格式无法直接按字符串比较(如MM/DD/YYYY),可转换为datetime对象后排序:
    from datetime import datetime
    user_items[user] = sorted(items, key=lambda x: datetime.strptime(x[1], '%Y-%m-%d %H:%M:%S'))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:55:17