从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参数,是一个可调用的函数,并返回一个可以排序类型的值,排序时使用该返回值作为排序依据。

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

  1. 列表排序方法sort()的key参数取值,以及lambda匿名函数

    1.sort()方法的key参数 li = [[1, 7], [1, 5], [2, 4], [1, 1]] li.sort() print(li) #[[1, 1], [1, 5], [1, 7], ...

  2. python中的排序方法都有哪些_Python中的排序方法sort(),sorted(),argsort()等

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...

  3. python 列表排序方法sort、sorted技巧篇

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...

  4. python中sorted()函数的用法_Python中的Sorted()函数

    在本教程中,我们将学习Python中的sorted()函数. 函数sorted()用于对可迭代对象进行升序或降序排序.我们甚至可以根据不同的键和值对字典列表进行排序.让我们充分利用sorted()函数 ...

  5. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  6. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  7. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  8. python排序之sort和sorted

    python排序之sort和sorted 在使用python的时候很多时候需要用到排序操作,自己挨个去排太麻烦,而且效率也比较低下.因此学会使用Python自带的排序函数就显得尤为必要了. pytho ...

  9. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

最新文章

  1. 【Web安全】关于SQL注入简介以及使用SqlMap获取管理员密码的探索
  2. UA SIE545 优化理论基础1 例题1 常见的凸集
  3. cv::Exception问题
  4. 线性代数:第二章 矩阵及其运算:逆矩阵、分块矩阵
  5. 计算机中用户权利和用户权限,揭秘:Win7系统用户和组权限说明
  6. 06 使用bbed提交delete的数据--01
  7. 使用node.js检查js语法错误
  8. 学好英语要从多方面入手,语法就是一个方面,本篇经验将从大的方面宏观地谈谈如何学好英语语法...
  9. ANTLR –语义谓词
  10. 模块怎么用_Android 组件化/模块化 的理解!
  11. c语言opengles程序,OpenGL ES _ 着色器_程序
  12. 基于AE的SimpleGIS框架的搭建
  13. NNS域名系统之SGAS
  14. 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟
  15. linux版本即时通讯软件,Linux下即时通讯软件IM应用
  16. 清华刘云浩教授回复学生2000问,你想了解的人工智能问题可能都在这里
  17. VLAN trunk实验
  18. 在Unity中实现体素化
  19. 苹果教你如何保持iPhone电池健康、延长电池寿命
  20. c语言格式化输入/输出%hhd、%hhx等

热门文章

  1. 【kerberos】kerberos 认证 详情介绍
  2. 【Elasticsearch】es 各种查询 详解
  3. 【Elasticsearch】Elasticsearch 集群健康值红色 解决方案 或者 分片 未分配
  4. 【Elasticsearch】elasticsearch 段 segment 段合并
  5. 【elasticsearch】 elasticsearch document 路由 (routing) 到shard
  6. 【Janino】Janino Java表达式计算引擎 案例
  7. Maven : error: missing or invalid dependency detected while loading class file 'RDD.class'
  8. 【安全】Ceotos 7.5.1804 安装openldap 2.4.44
  9. c语言程序不能运行,C语言编程,我写了一个程序,但不能运行.
  10. express给html设置缓存,webpack+express实现文件精确缓存的示例代码