如何在Python中实现先按长度再按字母序排序且无需自定义函数?
无需自定义函数实现多关键字排序(长度+字母序)
当然可以!不用写额外的自定义函数,Python本身就支持通过元组作为排序键来实现这种多规则排序,完全贴合你想要的思路。
你之前尝试的key=[len,sorted]写法虽然不对,但方向是对的——我们需要让排序先按长度,长度相同再按字母序。只需要把排序键改成一个包含两个条件的元组就行,具体代码如下:
b = ['six', 'small', 'he', 'foxes', 'saw'] b.sort(key=lambda x: (len(x), x)) print(b) # 输出: ['he', 'saw', 'six', 'small', 'foxes']
为什么这样可行?
Python在比较元组时会按顺序逐个元素比较:
- 首先比较元组的第一个元素(也就是字符串的长度
len(x)),长度小的排在前面; - 当两个元素长度相同时,就会比较元组的第二个元素(字符串本身
x),而字符串的默认比较规则就是自然字母序,这样就实现了长度相同的元素按字母排序的需求。
这种方式用lambda表达式替代了自定义函数,既简洁又满足你的要求,完全不用额外定义函数。
内容的提问来源于stack exchange,提问作者DataCapitalist
相关产品推荐
相关产品推荐

