1

我用这个

ThreadList.append([''.join(map(str,[Thread])), date, rrf[5]])

SendThreadList = ''

ThreadList = sorted(ThreadList, key=lambda Entry: Entry[1], reverse=True)
ThreadList = sorted(ThreadList, key=lambda Entry: Entry[2], reverse=True)

sorted 只显示第二个排序,如何用 key 中的两个条目排序?

4

2 回答 2

6

如果要按 Entry[1] 排序,然后按 Entry[2] 排序,则使 lambda 以元组形式返回...:

ThreadList = sorted(ThreadList, key=lambda Entry: (Entry[1], Entry[2]), reverse=True)

有时更具可读性(并且可能会更快)的是使用operator模块并使用key=operator.itemgetter(1, 2)

于 2013-01-06T21:09:05.177 回答
1

虽然这是错误的做法,但如果您交换订单,您的示例将起作用:

ThreadList = sorted(ThreadList, key=lambda Entry: Entry[2], reverse=True)
ThreadList = sorted(ThreadList, key=lambda Entry: Entry[1], reverse=True)

Python 排序是稳定的 - 如果两个条目并列[1],它们将保持从第一个排序开始的顺序。

于 2013-01-06T21:20:28.657 回答