按日期将python数组字段排序为日期字符串
Python JSON数组,如示例所示按日期将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&
[{
"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"))