文章目录
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法没有返回值,但是会对列表的对象进行排序,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
一、sort方法
描述
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
语法
sort()方法语法:
list.sort( key=None, reverse=False)
参数
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值
该方法没有返回值,但是会对列表的对象进行排序。
实例
# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
# 降序
vowels.sort(reverse=True)
# 输出结果
print ( '降序输出:', vowels )
降序输出: ['u', 'o', 'i', 'e', 'a']
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print ('排序列表:', random)
排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
二、sorted方法
描述:sorted() 函数对所有可迭代的对象进行排序操作。
sorted语法:sorted(iterable, key=None, reverse=False)
参数:
1.iterable -- 可迭代对象。
2.key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
3.reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)
返回值:
返回重新排序的可迭代对象
实例
通过字典中的value来进行数组/字典的排序
array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)
[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
根据字典中的value进行排序,也可以这么做
sortedClassCountDict = sorted(classCountDict.items(),key=operator.itemgetter(1),reverse=True)
先按照成绩降序排序,相同成绩的按照名字升序排序(-表示降序排序)
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)
[{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]