作用:用于对集合进行排序
语法:sorted(iterable[, cmp[, key[, reverse]]])
参数说明:
iterable
– 可迭代对象。cmp
– 比较的函数(python3中已被彻底移除),这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。key
– 主要是用来进行比较的元素(python2.4开始提供,之前采用cmp),只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。此函数将在每个元素比较前被调用。reverse
– 排序规则,reverse = True 降序 , reverse = False 升序(默认)
示例:
1、对列表排序,返回的对象不会改变原列表
>>> lst = [1, 5, 7, 2, 4]
>>> sorted(lit)
[1, 2, 4, 5, 7]
>>> sorted(lst, reverse=True) # 倒叙排序
[7, 5, 4, 2, 1]
>>> lst # 排序后原列表对象元素顺序未被改变
[1, 5, 7, 2, 4]
# 迭代对象内部顺序反转reversed, 源内部内部顺序不变
>>> lst = [1, 5, 7, 2, 4]
>>> list(reversed(lst))
[4, 2, 7, 5, 1]
>>> lst
[1, 5, 7, 2, 4]
# 列表自带排序sort, 会改变原有列表元素顺序
>>> lst = [1, 5, 7, 2, 4]
>>> lst.sort()
>>> lst
[1, 2, 4, 5, 7]
>>> lst.sort(reverse=True)
>>> lst
[7, 5, 4, 2, 1]
# 列表自带方法reverse顺序反转, 源数据内部顺序被改变
>>> lst = [1, 5, 7, 2, 4]
>>> lst.reverse()
>>> lst
[4, 2, 7, 5, 1]
2、根据自定义规则来排序,使用参数:key
# 使用key,默认搭配lambda函数使用
>>> chars = ['i', 'want', 'to', 'buy', 'basketball']
>>> sorted(chars, key=lambda x:len(x))
['i', 'to', 'buy', 'want', 'basketball']
>>> chars = ['i', 'want', 'to', 'buy', 'basketball']
>>> sorted(chars, key=lambda x:len(x), reverse=True)
['basketball', 'want', 'buy', 'to', 'i']
3、按照字典某个键值来排序
# 按照字典中的age字段来排序
>>>user_info = [{'name': 'boby', 'age': 12},
{'name': 'lucy', 'age': 23},
{'name': 'jack', 'age': 9},
{'name': 'ruby', 'age': 37}]
>>> sorted(user_info, key=lambda x: x['age'])
[{'name': 'jack', 'age': 9},
{'name': 'boby', 'age': 12},
{'name': 'lucy', 'age': 23},
{'name': 'ruby', 'age': 37}]
# 列表自带排序方法
>>>user_info = [{'name': 'boby', 'age': 12},
{'name': 'lucy', 'age': 23},
{'name': 'jack', 'age': 9},
{'name': 'ruby', 'age': 37}]
>>> user_info.sort(key=lambda x: x['age'])
>>> user_info
[{'name': 'jack', 'age': 9},
{'name': 'boby', 'age': 12},
{'name': 'lucy', 'age': 23},
{'name': 'ruby', 'age': 37}]