首页 > 解决方案 > python3中key=len, key=lambda x: (len(x), x)) 有什么区别

问题描述

我试图按元素的长度对列表进行排序,如果长度相同,则按字典顺序排序。测试清单是:

test = ['abcd', 'aa', 'bb', 'cc', 'dbca', 'bcda', 'ssdfgh', 'abcdefgh', 'abcdef']

而且,我尝试了两种排序方式。

一个是关键= len

test1 = sorted(test, key = len)

另一个是 key = lambda x : (len(x), x)

test2= sorted(test, key = lambda x : (len(x), x))

它们显示出不同的结果。

test1 的结果是:

['aa', 'bb', 'cc', 'abcd', 'dbca', 'bcda', 'ssdfgh', 'abcdef', 'abcdefgh']

test2 的结果是:

['aa', 'bb', 'cc', 'abcd', 'bcda', 'dbca', 'abcdef', 'ssdfgh', 'abcdefgh']

我想知道它们的工作方式有何不同。如何在 sorted(key = ~) 中找到内部结构?在 python 文档中,它只是解释了如何使用。我想知道内部代码。它是如何构建的,而不是它是如何使用的。

标签: pythonsorting

解决方案


  • key = len按长度排序

  • key = lambda x : (len(x), x)首先按长度排序,当长度相同时,它按字典顺序排序

这就是为什么第一个测试让零件保持'dbca', 'bcda'原样

而第二个测试将其重新排序为'bcda', 'dbca'


推荐阅读