python3的sorted和sort
作者:互联网
排序函数
python内置排序函数sorted,可以适用于所有可迭代的对象。而类型自有的sort函数只适用于类型本身。例如list.sort(),只适用于列表类型。另外,sort函数是在原来列表上直接进行排序,而sorted函数则是返回一个排序之后的列表。
sort(self, /, *, key=None, reverse=False) # list类的sort方法原型
sorted(iterable, /, *, key=None, reverse=False) # sorted方法原型
其中参数/和*是python3.8之后新增的语法,详情见Python函数。它们不需要我们传递,我们只关心self(iterable),key,reverse这三个参数即可。
iterable | 可迭代对象 |
key | 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序 |
reverse | 排序规则,reverse = True 降序 , reverse = False 升序(默认升序) |
对列表进行简单排序
L = [12, 23, 32, 1, 45, 18, 10, 22]
L.sort() # 原地排序
print(L)
对字典的键进行排序
D = {'a': 1, 'x': 2, 'c': 3}
key_sort = sorted(D.keys()) # 对字典键进行排序,返回列表对象
print(key_sort)
对字符串列表根据字符串的长度进行排序
str_list:list = ['123', '1', '1234', '12', '234']
str_list = sorted(str_list, key=lambda x:len(x)) # 根据字符串长度进行排序
print(str_list)
冬奥会奖牌榜
medal = [["中国", 9, 4, 2], ["美国", 8, 10, 7], ["英国", 1, 1, 0], ["法国", 5, 7, 2], [ "俄罗斯奥委会", 6, 12, 14]]
medal_tally = sorted(medal, key=lambda x:sum(x[1:])) # 奖牌总数榜
print(medal_tally)
gold_medal = sorted(medal, key=lambda x:x[1]) # 金牌榜
print(gold_medal)
silver_medal = sorted(medal, key=lambda x:x[2]) # 银牌榜
print(silver_medal)
copper_medal = sorted(medal, key=lambda x:x[3]) # 铜牌榜
print(copper_medal)
对字典的值进行排序,返回列表
D = {'a':100, 'b': 2333, 'c': 777, 'd': 666, 'e': 888}
res = sorted(D.items(), key=lambda x: x[1]) # 根据字典值进行排序
print(res)
按照成绩降序排序,相同成绩的按照名字升序排序
d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
l = sorted(d1, key=lambda x:(-x['score'], x['name'])) # 可以以元组形式传入,当分数相同的时候,按照姓名升序排列
print(l)
标签:sort,key,print,sorted,排序,medal,python3 来源: https://blog.csdn.net/zy010101/article/details/123229385