Python如何基于列表内部元素从右到左的优先级对多列表进行排序
Python实现按列表元素从右到左优先级排序
实现方法
Python内置的sorted()函数和列表sort()方法默认按照序列元素从左到右的顺序比较,要实现从右到左的优先级排序,只需将排序的key设置为子列表的倒序即可。
代码示例
待排序数据
待排序的列表集合:
[2005, 6, 21], [2003, 5, 21], [2005, 5, 11], [2003, 5, 22]
期望返回结果:
[2003, 5, 21], [2003, 5, 22], [2005, 5, 11], [2005, 6, 21]
排序代码
# 定义待排序的列表集合 lists = [[2005, 6, 21], [2003, 5, 21], [2005, 5, 11], [2003, 5, 22]] # 按从右到左的优先级排序,返回新的排序后列表 sorted_lists = sorted(lists, key=lambda x: x[::-1]) # 原地排序写法(直接修改原列表,无需返回新对象) # lists.sort(key=lambda x: x[::-1]) print(sorted_lists)
运行输出
[[2003, 5, 21], [2003, 5, 22], [2005, 5, 11], [2005, 6, 21]]
原理解释
x[::-1]是Python的切片语法,作用是将列表倒序,例如[2005,6,21]倒序后得到[21,6,2005]- 排序时会优先比较倒序后的第一个元素(对应原列表最右侧元素),相等时再依次比较后续元素(对应原列表从右往左数的下一个元素),完全符合从右到左的优先级要求
内容的提问来源于stack exchange,提问作者idiot one
相关产品推荐
相关产品推荐

