【发布时间】:2020-10-03 19:48:11
【问题描述】:
案例:我想根据两个属性对对象列表进行排序。第一个是表示得分的整数。第二个属性是 datetime.timedelta 对象。
我的目标:我想首先对列表进行排序(最高在顶部),然后在 timedelta 之后(最短/最小优先)。最终的结果应该是一个按分数排序的列表,当分数相等时,应该以最短的时间决定谁获胜。
我有以下代码:
def show_result_full(self):
result = self.sessions.all()
result.sort(key=lambda x: (x.score, x.session_time), reverse=True)
代码步骤:
- 获取所有会话
- 如上所述对会话进行排序
这不起作用,因为现在它在两个属性上都颠倒了。期待您的建议,因为我真的坚持这一点。
【问题讨论】:
-
result.sort(key=lambda x: (-x.score, x.session_time))(注意-。) -
这能回答你的问题吗? stackoverflow.com/questions/37693373/…
-
查看我之前回答过的类似问题stackoverflow.com/questions/63517942/…,尽管在这种情况下主键是升序,而辅助键是降序。
标签: python list lambda timedelta