对所有可迭代的对象进行排序操作

sort 与sorted区别:

sort 是应用在list上的方法 sorted可以对所以可迭代的对象进行排序操作

list的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list ,而不是在原来的基础上进行的操作

语法

sorted 语法:

sorted(iterable, key = None, reverse = False)

参数说明:

  • iterable -- 可迭代对象。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值

返回重新排序的列表。

print(sorted([5, 2, 3, 1, 4]))  # 默认为升序

#sorted 的应用,也可以通过 key 的值来进行数组/字典的排序
array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)

#使用lambda和sorted将列表里字符串排序按照字符串中的数字从小到大排列
lis = ["PCR 0: Core Root of Trust of Measurement (CRTM), BIOS, and Platform Extensions",
       "PCR 9: NTFS Boot Block",
       "PCR 2: Option ROM Code",
       "PCR 10: Boot Manager",
       "PCR 4: Master Boot Record (MBR) Code",
       "PCR 8: NTFS Boot Sector",
       "PCR 11: BitLocker Access Control"]
print(sorted(lis, key=lambda x: int(x.split(':')[0][4:])))

#先按照成绩降序排序,相同成绩的按照名字升序排序
list1 = [{'name': 'Alex', 'score': 48}, {'name': 'Harry', 'score': 18}, {'name': 'JSON', 'score': 28},
         {'name': 'christ', 'score': 38}]
print(sorted(list1, key=lambda x: (-x['score'], x['name'])))

  

 

 posted on 2023-01-16 11:37  boye169  阅读(20)  评论(0编辑  收藏  举报