Dat*_*ist 4 python sorting list
Python代码:
b=['six', 'small', 'he', 'foxes', 'saw']
b.sort(key=len)
b
Run Code Online (Sandbox Code Playgroud)
输出:
['he', 'six', 'saw', 'small', 'foxes']
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我按元素的长度排序并得到了上面的输出.
我想要的输出看起来像这样:['他','锯','六','小','狐狸']
所以我希望按长度进行第一次排序.然后对于具有相同长度的元素,我想按字母顺序排序.
我的问题:如果没有编写自定义函数,有没有办法做到这一点?也许是这样的:
b.sort(key=[len,sorted]) # this doesn't work but I think it explains the idea.
Run Code Online (Sandbox Code Playgroud)
谢谢!
Ósc*_*pez 13
我们可以使用复合排序键,首先按长度排序,按字典顺序排序.我们通过创建元组来实现这一点,因为元组将按照它们出现的顺序使用元素进行自然排序.
b = ['six', 'small', 'he', 'foxes', 'saw']
b.sort(key=lambda s: (len(s), s))
Run Code Online (Sandbox Code Playgroud)
为了记录,上面的结果在这个排序列表::
['he', 'saw', 'six', 'foxes', 'small']
Run Code Online (Sandbox Code Playgroud)
这是问题中规定的正确顺序(但问题中的示例输出是错误的,所以请在downvoting之前注意它!)