python - 按日期将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..
解决方案
只需删除 lambda 表达式中的数组访问
key=lambda x['status_changed_at']: ...
做
key=lambda x: ...
数组访问稍后完成:
datetime.strptime(x['status_changed_at'] ...
对于降序排序,您还需要
..., reverse=True)
除此之外,您需要在 中修改您的表达式strftime
,因为您首先拥有月份并且它取决于语言环境。%Y%m%d%H%M
可能排序更好。
推荐阅读
- spring - 无法在 Spring Boot 中解析名称为“index”的视图
- swift - SwiftUI 只允许在特定条件下切换
- time-complexity - 以下三个循环依赖条件的时间复杂度
- html - 在 ASP.NET MVC 中将 favicon 添加到 Html.ActionLink?
- xslt - 如何通过 xsl 模板将字体和样式应用于 xml 数据
- scim - 处理 PATCH 请求中不受支持的 SCIM 属性
- entity-framework - EntityFramework Codefirst 从数据库更新
- c# - 无法使用 Websocket 连接客户端-服务器
- django - 如何在 django rest 框架中解析序列化器数据
- ruby - 在厨师的 ruby_block 中更改权限时如何执行“除非”条件?