栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python: list多级排序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python: list多级排序

【学习笔记】 list多级排序

首先,默认的sorted函数时就可以实现多级排序,主要看优先级参考的位置。

1、优先级位置按默认顺序,逐级排序,第一个位置优先级最高,第二个位置优先级次之,第三个位置再次之…:sorted函数

list=[[1,2,9,'r'],[2,3,4,'a'],[2,1,3,'c'],[1,4,5,'b'],[1,2,4,'f'],[1,2,4,'d']]
list1=sorted(list)
print(list1)

## 运行结果
[[1, 2, 4, 'd'], [1, 2, 4, 'f'], [1, 2, 9, 'r'], [1, 4, 5, 'b'], [2, 1, 3, 'c'], [2, 3, 4, 'a']]

第一个位置的数字优先级最高,默认按第一个数字排序。如果第一个数字相同,则比较第二个数字,以此类推。

注:如果想要从大到小的顺序,可以设置sorted函数中的reverse=True。

list1=sorted(list,reverse=True)
print(list1)

## 运行结果
[[2, 3, 4, 'a'], [2, 1, 3, 'c'], [1, 4, 5, 'b'], [1, 2, 9, 'r'], [1, 2, 4, 'f'], [1, 2, 4, 'd']]

2、优先级不按顺序:修改sorted函数中的key

list=[[1,2,9,'r'],[2,3,4,'a'],[2,1,3,'c'],[1,4,5,'b'],[1,2,4,'f'],[1,2,4,'d']]
# x只是一个任意的名称,保证x与顿号后变量名的保持一致
list2=sorted(list, key = lambda x:(int(x[1]),int(x[0])))
print(list2)

## 运行结果
[[2, 1, 3, 'c'], [1, 2, 9, 'r'], [1, 2, 4, 'f'], [1, 2, 4, 'd'], [2, 3, 4, 'a'], [1, 4, 5, 'b']]

x[1],x[0] 表示第二个位置优先级最高,然后是第一个位置。可以是单个或多个。

但注意,优先级只按提到的二个位置排序,当这个两个位置完全相同时,将不再参考其他位置的值,按原来的顺序排列。

listt=[['David',15],['Neo',12],['James',13]]
print(sorted(listt,key=lambda x:x[1]))

##运行结果
[['Neo', 12], ['James', 13], ['David', 15]]

这个例子更为直观,第一个位置为姓名,第二个位置为年龄,只按年龄排序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/283398.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号