我试图按元素的长度对列表进行排序,如果长度相同,则按字典顺序进行排序。 测试名单如下:
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文档中,它只是解释了如何使用。我想知道内部代码。它是如何构造的,而不是如何使用的
key = len
仅按长度排序key = lambda x : (len(x), x)
首先按长度排序,当长度相同时,按字典顺序排序这就是为什么第一个测试保持部分
'dbca', 'bcda'
不变的原因而第二个测试将其重新排序为
'bcda', 'dbca'
相关问题 更多 >
编程相关推荐