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

如何对Python列表先按dt_1升序再按duration_milliseconds升序排序?

问题描述

我有如下格式的Python列表:

a = [
{
"dt_1":datetime.datetime(...),
"duration_milliseconds":<int>
},
{
"dt_1":datetime.datetime(...),
"duration_milliseconds":<int>
},
{
"dt_1":datetime.datetime(...),
"duration_milliseconds":<int>
},
{
"dt_1":datetime.datetime(...),
"duration_milliseconds":<int>
}
]

希望按以下规则对该列表排序:先按dt_1字段排序(旧日期时间在前),若dt_1相同则按duration_milliseconds排序(时长较短的在前)。

解决方案

在Python中可以通过指定排序键实现多条件排序,有两种常用方式:

方式一:原地排序(修改原列表)

使用列表的.sort()方法,通过lambda表达式定义排序优先级:

a.sort(key=lambda x: (x["dt_1"], x["duration_milliseconds"]))

方式二:生成新列表(原列表不变)

使用sorted()函数,通过lambda指定排序键,返回排序后的新列表:

sorted_a = sorted(a, key=lambda x: (x["dt_1"], x["duration_milliseconds"]))

逻辑说明

排序时会先按元组第一个元素x["dt_1"]升序排列(默认升序规则下,旧日期自然排在前面);当dt_1值相同时,再按第二个元素x["duration_milliseconds"]升序排列(数值更小的短时长会排在前面),完全匹配需求。

内容的提问来源于stack exchange,提问作者Chris P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:47:42