sorted

作用:用于对集合进行排序
语法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}]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值