python中sort排序与sorted排序

版权声明:https://blog.csdn.net/study_in https://blog.csdn.net/study_in/article/details/86476934

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'}]  # 列表中的字典排序

猜你喜欢

转载自blog.csdn.net/study_in/article/details/86476934
今日推荐