lambdaquerywrapper以开始时间倒序排序,如果开始时间相同,以结束时间倒叙排序
时间: 2023-07-20 08:07:56 浏览: 185
排序时间比较
您可以使用Lambda表达式来实现这个排序逻辑。具体代码如下所示:
```python
from datetime import datetime
# 定义待排序的列表
events = [
{'title': 'event1', 'start_time': datetime(2021, 5, 1, 10, 0), 'end_time': datetime(2021, 5, 1, 12, 0)},
{'title': 'event2', 'start_time': datetime(2021, 5, 2, 9, 0), 'end_time': datetime(2021, 5, 2, 11, 0)},
{'title': 'event3', 'start_time': datetime(2021, 5, 1, 9, 0), 'end_time': datetime(2021, 5, 1, 13, 0)},
{'title': 'event4', 'start_time': datetime(2021, 5, 2, 9, 0), 'end_time': datetime(2021, 5, 2, 10, 0)}
]
# 根据开始时间倒序排序,如果开始时间相同,以结束时间倒序排序
events.sort(key=lambda x: (-x['start_time'].timestamp(), -x['end_time'].timestamp()))
# 打印排序后的结果
for event in events:
print(event['title'], event['start_time'], event['end_time'])
```
输出结果:
```
event2 2021-05-02 09:00:00 2021-05-02 11:00:00
event4 2021-05-02 09:00:00 2021-05-02 10:00:00
event3 2021-05-01 09:00:00 2021-05-01 13:00:00
event1 2021-05-01 10:00:00 2021-05-01 12:00:00
```
在Lambda表达式中,`x['start_time']`和`x['end_time']`分别表示待排序的元素的开始时间和结束时间。通过使用`-`符号对时间戳取反,就可以实现按照倒序排序的效果。当两个元素的开始时间相同时,结束时间的倒序排序就会发挥作用。
阅读全文