当前位置:   article > 正文

python中sorted函数的作用_Python中排序方法sort、函数sorted的key参数的作用分析

souted函数中k是干嘛的

从Python2.4开始,list.sort方法 和 sorted方法 都增加了一个 ‘key’ 参数用来在进行比较之前指定每个列表元素上要调用的函数,将函数的返回值作为比较的依据。

那么怎么使用这个key参数呢?

有2种办法:

1、使用一个函数,这个函数的操作对象就是要比较的数据元素,返回结果就是某个可以用来比较的Python类型的数据;

2、使用匿名函数lambda,通过简单表达式返回某个可以用来比较的Python类型的数据。

这两种方法本质上是一致的。

我们来看案例。

一、案例1:使用匿名函数lambda来作为key

代码

>>> class Car():

def __init__(self,carname,oilcp100km, price):

self.carname,self.oilcp100km,self.price = carname,oilcp100km, price

def __repr__(self):

return str(self.__dict__)

>>> car1,car2,car3 = Car('爱丽舍',8,10),Car('凯美瑞',7,27),Car('科帕奇',12,23)

>>> cars=[car1,car2,car3]

>>> cars

[{'carname': '爱丽舍', 'oilcp100km': 8, 'price': 10}, {'carname': '凯美瑞', 'oilcp100km': 7, 'price': 27}, {'carname': '科帕奇', 'oilcp100km': 12, 'price': 23}]

>>> cars.sort(key=lambda x:x.price) #根据售价进行排序

>>> cars

[{'carname': '爱丽舍', 'oilcp100km': 8, 'price': 10}, {'carname': '科帕奇', 'oilcp100km': 12, 'price': 23}, {'carname': '凯美瑞', 'oilcp100km': 7, 'price': 27}]

>>>

执行截屏

案例分析

从上面的案例情况来看,使用匿名函数返回实例的price作为排序依据,排序后列表中的元素按照price升序进行了排序。

二、案例2:使用函数来作为key

案例说明:使用上面案例1的类及列表,新增一个函数getPrice来代替lambda,进行降序排序;

案例代码:

>>> def getPrice(self):return self.price

>>> cars

[{'carname': '爱丽舍', 'oilcp100km': 8, 'price': 10}, {'carname': '科帕奇', 'oilcp100km': 12, 'price': 23}, {'carname': '凯美瑞', 'oilcp100km': 7, 'price': 27}]

>>> cars.sort(key=getPrice,reverse=True) #根据售价进行倒序排序

>>> cars

[{'carname': '凯美瑞', 'oilcp100km': 7, 'price': 27}, {'carname': '科帕奇', 'oilcp100km': 12, 'price': 23}, {'carname': '爱丽舍', 'oilcp100km': 8, 'price': 10}]

>>>

案例截屏

案例分析

可以看到新增的函数正确被使用。

通过上述案例,我们可以看到,排序函数sorted和排序方法sort中使用的key参数,是一个可调用的函数,并返回一个可以排序类型的值,排序时使用该返回值作为排序依据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/722966?site
推荐阅读
相关标签
  

闽ICP备14008679号