python3中key=len,key=lambda x:(len(x),x))之间有什么区别

2024-09-26 22:09:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我尝试了两种分类方法

一个是key=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']

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


Tags: keytestlen排序aaccsortedabcd
1条回答
网友
1楼 · 发布于 2024-09-26 22:09:16
  • key = len仅按长度排序

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

这就是为什么第一个测试保持部分'dbca', 'bcda'不变的原因

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

相关问题 更多 >

    热门问题