python中sort排序与sorted排序(列表 字典排序)

本文深入讲解Python中的排序方法,包括sort()和sorted()函数的使用,以及如何利用key和reverse参数进行复杂排序,如字符串、字典和列表中的字典排序。

sort排序
sort排序结果会影响本身结构
例:

a = [2,13,7,34]
a.sort()
print(a)  # [2, 7, 13, 34]
b = a.sort()  # 错误写法

如果需要一个排序好的列表,同时保持原列表不变,怎么实现呢?

a = [2,13,7,34]
b = a[:]
b.sort()
print(a)  # [2, 13, 7, 34]
print(b)  # [2, 7, 13, 34]
或者
a = [2,13,7,34]
b = sorted()
print(a)  # [2, 13, 7, 34]
print(b)  # [2, 7, 13, 34]

sort的可选参数
sort方法还有两个可选参数:key和reverse

1、key在使用时必须提供一个排序过程总调用的函数:

x = ['mmm', 'mm', 'mm', 'm' ]
x.sort(key = len)
print (x) # ['m', 'mm', 'mm', 'mmm']

2、reverse实现降序排序,需要提供一个布尔值:

y = [3, 2, 8 ,0 , 1]
y.sort(reverse = True)
print (y) #[8, 3, 2, 1, 0]

True为倒序排列,False为正序排列
sorted排序
sorted排序不会影响本身的结构
sorted返回一个有序的副本,并且类型总是列表,如下:

print (sorted('Python')) #['P', 'h', 'n', 'o', 't', 'y']

其他情况:

b = ['aa','BB','bb','zz','CC'] 
print(sorted(b)) 
['BB', 'CC', 'aa', 'bb', 'zz']    #按列表中元素每个字母的ascii码从小到大排序,如果要从大到小,请用sorted(b,reverse=True)下同 
     
c =['CCC', 'bb', 'ffff', 'z']  
print(sorted(c,key=len))             #按列表的元素的长度排序 
['z', 'bb', 'CCC', 'ffff'] 
     
d =['CCC', 'bb', 'ffff', 'z'] 
print(sorted(d,key = str.lower ))    #将列表中的每个元素变为小写,再按每个元素中的每个字母的ascii码从小到大排序 
['bb', 'CCC', 'ffff', 'z']

字典及列表中的字典排序

a = {'a': 23, 'b': 25,'c': 125, 'd': 10, 'e': 32, 'f': 9}
print(sorted(a.items(),key=lambda item:item[1]))
# [('f', 9), ('d', 10), ('a', 23), ('b', 25), ('e', 32), ('c', 125)]  # 排序完成后为列表中的元组


f = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}]     #列表中的元素为字典 
f1 = sorted(f,key = lambda x:x['age'])
print(f1)
# [{'age': 20, 'name': 'abc'}, {'age': 25, 'name': 'ghi'}, {'age': 30, 'name': 'def'}]  # 列表中的字典排序
票盟投票软件是最新简单好用的免费票盟投票软件最新功能1、显示投票统计功能,精确统计投票成功计数和精确统计投票失败计数。2、添加投票运行时间,让您知道自动投票软件工作(投票)了多长时间。每次重新开始投票都会重新计算。3、实时获取本机的外网IP,比上个版本获取IP更精确。4、添加了可以让客户自己设置当天的投票量,有两个条件供客户选择。当用户设置的投票数到了可以退出此自动投票软件或者直接关闭计算机。5、资料程序自己生成。比如姓名、电话、身份证号信息、手机、邮箱、住址、性别等等都可以自动随机生成。6、票盟投票软件智能自动识别用户所使用的网络,比如ADSL宽带(也就是直接连猫(modem))再者就是使用路由器或者使用代理服务器连接网络。7、票盟投票软件详细的投票记录,可以记录下当前投票IP,投票状态,投票的当前时间,每次投票的间隔时间。8、增加用户使用许可协议。用前请先看协议。如果您使用了。表示您已经同意我们的许可协议。此协议一切解释权归胜易网络投票软件开发中心所有。9、增加帮助文件使用。我们从我们这几年走来考虑到我们的用户都是不太了解我们软件的用户,所以我门制作了此帮助文件。10、验证码模块:分为两种模式,根据用户使用爱好。一种是软件自动识别验证码,另一种则是通过手动来输入验证码。11、票盟投票软件处处为用户考虑。可以让用户对软件有所修改。所以增加了设置功能。12、票盟投票软件智能自动获取用户的宽带默认连接。在您电脑安装有默认宽带连接的情况下,你可以点击软件中自动活动的宽带连接名称。既可以自动获取帐户名和密码。对用户来说是非常方便的。13、用户自己可以设置几票换一次IP。14、可以自己设置每次的拨号间隔。15、可以自己设置每次的拨号等待。即:在断线之后等待几秒再连接宽带。16、可以自己设置每次的联网等待时间。即:在连接网络成功之后等待几秒再开始向服务提交投票数据。17、票盟投票软件版本最大的一个更新,既是可以让用户使用伪造IP向服务提交投票数据。(通过这种方法可以使投票速度大大的提交。当然投票的数据也是100%的有安全保障)18、3种投票模式:自动断网/联网换IP、通过伪造IP方式、普通的平常投票。19、使用伪造IP和普通的投票方式的话,可以设置投票时间间隔。即几秒向服务提交投票数据。20、程序还会更进一步提高。期待您的建议和批评。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的狮王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值