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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'}]  # 列表中的字典排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值