python数字排序_Python中数据的排序

目录

列表的排序

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

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MTE5MTky,size_16,color_FFFFFF,t_70

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 operator

stu={'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'}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值