You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按数字降序、字母升序对Python嵌套列表进行排序

解决嵌套列表的多条件排序问题

嘿,这事儿其实很简单,Python的排序功能支持多条件排序,咱们只需要调整排序的key参数就行!

你已经搞定了数字降序,现在要加上“数字相同时按字母升序”的规则,只需要给排序函数传入一个元组作为排序依据:

  • 第一个元素是数字的负数,这样默认的升序排序就会变成原数字的降序(比如5的负数是-5,比2的负数-2小,所以-5会排在-2前面,对应原数字5排在2前面)
  • 第二个元素是字母本身,当第一个条件(数字)相同时,就会按字母的自然顺序升序排列

直接上代码示例:

mylist = [['a', 5], ['l', 2], ['u', 1], ['t', 1], ['q', 1], ['o', 1], ['e', 1]]

# 原地修改列表的排序方式
mylist.sort(key=lambda x: (-x[1], x[0]))
print(mylist)
# 输出: [['a', 5], ['l', 2], ['e', 1], ['o', 1], ['q', 1], ['t', 1], ['u', 1]]

# 如果不想修改原列表,用sorted()返回新列表
sorted_list = sorted(mylist, key=lambda x: (-x[1], x[0]))
print(sorted_list)
# 输出和上面一致

解释一下这个lambda x: (-x[1], x[0]):

  • 对于每个子列表x,-x[1]把数字取反,让大数字的优先级更高(降序)
  • 当两个子列表的数字相同时,就会比较x[0]也就是字母,Python默认按字符串的Unicode编码升序排列,正好符合你要的e < o < q < t < u的顺序

这样就能完美得到你期望的排序结果啦!

内容的提问来源于stack exchange,提问作者James Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:05:28