python序列的排序 sorted

sorted和sort的异同

不同之处

sort 只适用于list类型的数据,而sorted适用于一切python序列类型,包括可变类型(list, dict, set)和不可变类型(frozenset, str)等一切实现了__iter__方法的可迭代对象
sort是在原列表上进行排序(可通过id方法查看内存地址不变),返回值是None
sorted会创建一个新的列表存放排序结果,无论排序的是什么类型,最终返回值都是list
tip:所以这里要注意sort返回值是None,不能对返回值进行链式调用

# 两个函数返回值的比较
>>> print([5,4,3,2,1].sort())
None
>>> print(sorted([5,4,3,2,1]))
[1, 2, 3, 4, 5]
相同之处
sort(self, /, *, key=None, reverse=False)
sorted(iterable, /, *, key=None, reverse=False)

从上面可以看到二者的参数定义,都接受两个关键参数 keyreverse
key: 一个只有一个参数的方法,这个函数会被作用在每个元素上,该方法所产生的结果将作为排序比较的标准,默认值为元素本身的大小。
reverse:值为True时为降序排序,值为False时为升序排序,默认值为False。

key 关键字的用法

sort为list的内置函数,使用范围不大,但是如果序列是为list时使用sort的性能是优于sorted的,这里我们还是以sorted为基础,重点看一下key 关键字的不同应用场景,以下不涉及reverse参数,默认都是升序排序。

字典排序

先看一个例子

>>> sorted(dict(小明=18, 小红=17, 小白=20))
['小明', '小白', '小红']

上面给出的字典排序最终返回结果是有keys,这在实际应用场景中肯定是不行的。看以下代码,使用items()方法将字典元组化,key关键字接受一个匿名函数,这里x是每个元组,取元组下标为1代表是字典的value,按照value进行排序,排序完成后将使用字典工厂函数将元组恢复成字典。

>>> d = dict(小明=18, 小红=17, 小白=20)
>>> dict(sorted(d.items(), key=lambda x:x[1], reverse=True))
{
   '小白': 20, '小明': 18, '小红': 17}
列表排序

其实我们从上面可以看出,字典排序的本质就是将字典转为元组再进行排序的,那么对于元组或者列表的排序也是一样的道理,看一下列表排序

>><
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值