首页 > 解决方案 > 按日期将python数组字段排序为日期字符串

问题描述

Python JSON 数组如示例所示

[{
   "id":"3",
   "creator_id":"2131xxxxxxxx",
   "lowest_price_at":"2021-01-21T09:29:38-08:00",
   "status":"published",
   "status_changed_at":"2021-02-09T23:59:34-08:00",
   "origin_domain":"us"
},
{
   "id":"5",
   "creator_id":"2131xxxxxxxx",
   "lowest_price_at":"2021-01-15T09:29:38-08:00",
   "status":"published",
   "status_changed_at":"2021-02-09T23:59:34-08:00",
   "origin_domain":"us"
},
{
   "id":"1",
   "creator_id":"2131xxxxxxxx",
   "lowest_price_at":"2021-01-5T09:29:38-08:00",
   "status":"published",
   "status_changed_at":"2021-02-09T23:59:34-08:00",
   "origin_domain":"us"
}]

它包含在 live_items 数组中。现在我需要按降序对该数组进行排序status_changed_at。意味着数组中的第一项需要是"id":"1"

from datetime import datetime
print(sorted(live_items, key=lambda x['status_changed_at']: datetime.strptime(x['status_changed_at'], "%Y-%m-%dT%H:%M:%S-08:00").strftime("%b %d %Y %I:%M%p")))

SyntaxError: 表达式不能包含赋值,也许你的意思是“==”?

这是我在 python 数组中的线程排序日期上找到的,但我只是卡住了,因为我第一次使用 lambda ex..

标签: pythonarrays

解决方案


只需删除 lambda 表达式中的数组访问

key=lambda x['status_changed_at']: ...

key=lambda x: ...

数组访问稍后完成:

datetime.strptime(x['status_changed_at'] ...

对于降序排序,您还需要

..., reverse=True)

除此之外,您需要在 中修改您的表达式strftime,因为您首先拥有月份并且它取决于语言环境。%Y%m%d%H%M可能排序更好。


推荐阅读