如何在Python中按首个元素降序排序含无逗号配对的列表?
Python 按配对首个元素降序排序列表
给定列表:
original_list = ['8 4', '4 3', '15 8', '10 5', '']
需要按每个非空配对的首个元素降序排序,同时保留空字符串在末尾,预期输出:
['15 8', '8 4', '10 5', '4 3', '']
实现方法
使用Python内置的sorted()函数,结合自定义排序键即可完成:
original_list = ['8 4', '4 3', '15 8', '10 5', ''] sorted_list = sorted(original_list, key=lambda x: int(x.split()[0]) if x else -float('inf'), reverse=True) print(sorted_list)
代码说明
- 自定义排序键:通过
lambda函数为每个元素生成排序依据:- 非空元素:用
split()分割字符串,取第一个部分转为整数,以此作为排序键 - 空字符串:返回
-float('inf')(负无穷),在降序排序时会被排在所有正整数之后
- 非空元素:用
reverse=True:开启降序排序,让数字大的配对排在前面
运行代码后即可得到预期的排序结果。
内容的提问来源于stack exchange,提问作者pynovice
相关产品推荐
相关产品推荐

