Python中数据的排序

网友投稿 287 2022-09-21

Python中数据的排序

目录

​​列表的排序​​

​​sort(key,reverse)方法 ​​

​​sorted(target,key,reverse) 函数​​

​​元组tuple的排序​​

​​sort(key,reverse)方法​​

​​sorted(target,key,reverse)函数 ​​

​​字符串的排序​​

​​字典的排序​​

列表的排序

列表的排序可以使用列表自带的 sort()  方法,也可以使用 sorted() 函数

sort() 方法是修改原列表;而 sorted() 函数是对列表的复制再排序,返回一个新的列表,两者有区别。

sort(key,reverse)方法

对于列表中的元素是数字的话,默认是按照大小排序

>>a=[3,1,6,2,-4,7]>>a.sort() //从小到大>>print(a)[-4, 1, 2, 3, 6, 7]>>a.sort(reverse=Ture) //倒序,从大到小>>print(a)[7, 6, 3, 2, 1, -4]还可以传入参数 key,key参数是对要排序的数据的操作>>a.sort(key=lambda x:abs(x))>>print(a)[1, 2, 3, -4, 6, 7]

对于列表中元素是字符串的话,默认是按照 元素第一个字母的ASCII 值来排序

>>a=['day','Back','alice','Change']>>a.sort() //默认是安装第一个字母的ASCII值排序>>print(a)['Back', 'Change', 'alice', 'day']>>a.sort(key=str.lower) //不区分第一个字母的大小写排序>>print(a)['alice', 'Back', 'Change', 'day']

sorted(target,key,reverse) 函数

对于列表中的元素是数字的话,默认是按照大小排序

>>a=[3,1,6,2,-4,7]>>b=sorted(a)>>print(b)[-4, 1, 2, 3, 6, 7] //从小到大>>c=sorted(a,reverse=True) [7, 6, 3, 2, 1, -4] //倒序,从大到小>>d=sorted(a,key=lambda x:abs(x))[1, 2, 3, -4, 6, 7]

对于列表中元素是字符串的话,默认是按照 元素第一个字母的ASCII 值来排序

>>a=['day','Back','alice','Change']>>b=sorted(a) //默认是安装第一个字母的ASCII值排序>>print(b)['Back', 'Change', 'alice', 'day'] >>c=sorted(a,key=str.lower) //不区分第一个字母的大小写排序>>print(c)['alice', 'Back', 'Change', 'day']

元组tuple的排序

sort(key,reverse)方法

元组自身没有 sort() 排序方法,要对元组用 sort() 进行排序,我们可以先将元组转换成list 列表,然后排序,最后再转换成元组。

>>a=(3,1,6,2,-4,7)>>b=list(a)>>b.sort() //也可以传入key和reverse参数>>a=tuple(b)>>print(a)(-4, 1, 2, 3, 6, 7)

sorted(target,key,reverse)函数

>>a=(3,1,6,2,-4,7)>>b=sorted(a) //也可以传入key和reverse参数>>print(b)[-4, 1, 2, 3, 6, 7]

字符串的排序

python中的字符串类型是不允许直接修改元素的。必须先把要排序的字符串放在容器里,如 list 。然后再利用 list 的 sort() 方法排序

>>a="hello,word!">>b=list(a)>>b.sort()>>print(b)['!', ',', 'd', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w']>>c="".join(b)>>print(c)!,dehlloorw或者直接一行搞定>>a="hello,word!">>s="".join((lambda x:(x.sort(),x)[1])(list(s)))>>print(s)!,dehlloorw或者利用 sorted() 函数>>a="hello,word!">>b=sorted(a)>>print(b,type(b))['!', ',', 'd', 'e', 'h', 'l', 'l', 'o', 'o', 'r', 'w'] >>c="".join(b)>>print(c)!,dehlloorw

字典的排序

对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是一个哈希表的结构:

但实际应用中我们确实有这种排序的“需求”-----安装key值首字母的ASCII值排序,按照values的值排序,或者按照别的奇怪的顺序进行输出,我们只需要把字典转化成 lis t或者 tuple,把字典每一对键值转化为list中的两位子list或者子tuple再输出,就可以达到我们的目的

import operatorstu={'name':'xie','age':"20",'id':"40",'sex':'man'}##安装key值升序进行排列a=dict(sorted(stu.items(),key=operator.itemgetter(0),reverse=False))##安装key值降序进行排列b=dict(sorted(stu.items(),key=operator.itemgetter(0),reverse=True))##安装value值升序进行排列c=dict(sorted(stu.items(),key=operator.itemgetter(1),reverse=False))##安装value键值降序进行排列d=dict(sorted(stu.items(),key=operator.itemgetter(1),reverse=True))print(stu)print(a)print(b)print(c)print(d)##############################################################{'name': 'xie', 'age': '20', 'id': '40', 'sex': 'man'}{'age': '20', 'id': '40', 'name': 'xie', 'sex': 'man'}{'sex': 'man', 'name': 'xie', 'id': '40', 'age': '20'}{'age': '20', 'id': '40', 'sex': 'man', 'name': 'xie'}{'name': 'xie', 'sex': 'man', 'id': '40', 'age': '20'}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:羊肉价格突破80元/公斤,预计春节后会出现小幅回调!
下一篇:绕过网站WAF(图片绕过)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~