如何用两把键对lambda进行排序?

时间:2013-01-06 21:02:10

标签: python map lambda sorted

我用这个

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)

排序显示只有第二个排序,如何用键中的两个包进行排序??

2 个答案:

答案 0 :(得分:6)

如果你想按Entry [1]排序,然后输入[2],那么你将lambda作为元组返回......:

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

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

答案 1 :(得分:1)

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

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

Python排序是稳定的 - 如果两个条目与[1]相关联,它们将保持第一种排序。