我有一个字典列表(消息线程),其中包含另一个字典列表(消息) 我需要按最新消息的日期对线程进行排序。
数据是什么样的
[
{key:thread1,
messages:[
{key:message1,
date:10/10/2023
}
/// older messages
]
},
{key:thread2,
messages: [
{key:message4,
date:10/13/2023
},
///older messages
]
}
]
我需要对其进行排序,以便列表中的第一个线程 2 具有最新消息,与线程 1 不同,消息已经正确排序。
使用您描述为
threads
的结构数组,可以像这样获取包含最新消息的线程:
max(threads,key=lambda x: max(m["date"] for m in x["messages"]))
请小心这些日期参数的格式。如果它们是格式为月/日/年的字符串,
max
将无法可靠地返回最近的日期。解决此问题的一种方法是在执行操作之前将日期参数转换为日期时间对象。