按日期将python数组字段排序为日期字符串

按日期将python数组字段排序为日期字符串,python,arrays,Python,Arrays,Python JSON数组,如示例所示 [{ "id":"3", "creator_id":"2131xxxxxxxx", "lowest_price_at":"2021-01-21T09:29:38-08:00", "status":"published", "status_changed_at&

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\u changed\u在descending处对该数组进行排序。 这意味着数组中的第一项需要是具有
“id”:“1”

SyntaxError:表达式不能包含赋值,可能是您的意思 “=”


这是我在线程中找到的,但由于我第一次使用lambda ex,我就卡住了。

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

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

key=lambda x: ...
阵列访问稍后完成:

datetime.strptime(x['status_changed_at'] ...
对于降序排序,您还需要

..., reverse=True)

除此之外,您还需要在中重新编写表达式,因为您有第一个月,并且它依赖于区域设置<代码>%Y%m%d%H%m可能排序更好。

您不需要在处为lambda提供密钥
状态更改。第一个参数表示元素本身

应该是:

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

这让我很长时间都发疯了。非常感谢。有时我需要在实际开始使用strftime之前阅读有关strftime的文档-
from datetime import datetime
res = sorted(live_items,  key=
             lambda x: 
                 datetime.strptime(x['status_changed_at'], "%Y-%m-%dT%H:%M:%S-08:00").strftime("%b %d %Y %I:%M%p"))