从Python2.4开始,list.sort方法 和 sorted方法 都增加了一个 ‘key’ 参数用来在进行比较之前指定每个列表元素上要调用的函数,将函数的返回值作为比较的依据。
那么怎么使用这个key参数呢?
有2种办法:
1、使用一个函数,这个函数的操作对象就是要比较的数据元素,返回结果就是某个可以用来比较的Python类型的数据;
2、使用匿名函数lambda,通过简单表达式返回某个可以用来比较的Python类型的数据。
这两种方法本质上是一致的。
我们来看案例。
一、 案例1:使用匿名函数lambda来作为key

  1. 代码
>>> 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}]>>>
  1. 执行截屏
  1. 案例分析
    从上面的案例情况来看,使用匿名函数返回实例的price作为排序依据,排序后列表中的元素按照price升序进行了排序。

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

  1. 案例说明:使用上面案例1的类及列表,新增一个函数getPrice来代替lambda,进行降序排序;
  2. 案例代码:
>>> 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}]>>>
  1. 案例截屏
  1. 案例分析
    可以看到新增的函数正确被使用。通过上述案例,我们可以看到,排序函数sorted和排序方法sort中使用的key参数,是一个可调用的函数,并返回一个可以排序类型的值,排序时使用该返回值作为排序依据。

请点击下面的“了解更多”阅读原文。

python不用sort排序_Python排序方法sort、sorted的key参数的作用相关推荐

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

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

  2. python不用sort排序_Python排序之sortamp;sorted

    1 首先,Python中sort与sorted的区别: python中列表的内置函数sort()可以对列表中的元素进行排序,sort()函数是内置函数,会改变当前对象: 而全局性的sorted()函数 ...

  3. python set函数 返回排序_Python排序函数的使用方法详解

    Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,di ...

  4. sort函数_Python排序之sortamp;sorted

    1 首先,Python中sort与sorted的区别: python中列表的内置函数sort()可以对列表中的元素进行排序,sort()函数是内置函数,会改变当前对象: 而全局性的sorted()函数 ...

  5. 使用python排序_Python排序

    排序,是许多编程语言中经常出现的问题.同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现) 一.使用Python内置函数进行排序 Python中拥有内置函数实现排序,可以直接调用 ...

  6. python 排序_Python 排序了解一下?

    脚本之家 你与百万开发者在一起 文 | 潮汐 来源:Python 技术「ID: pythonall」 排序是每个开发人员都需要掌握的技能.排序是对程序本身有一个全面的理解.不同的排序算法很好地展示了算 ...

  7. python二维数组排序_Python排序多维数组

    我需要按照特定的元素对数组进行排序. This is an array:arr= [0, [71, 554, 258, 793]] [1, [61, 415, 148, 593]] [2, [91, ...

  8. python按照绝对值排序_Python高阶函数sorted排序

    sorted用法 sorted是Python提供的功能强大的排序函数.满足字符,数字等排序要求. 对数字进行排序: list = [-12, -2, -24, 20, 39, 10]; print(s ...

  9. 下列不是python数据类型的是_Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了...

    Python认为一切皆为对象:比如我们初始化一个list时: li = list('abc') 实际上是实例化了内置模块builtins(python2中为__builtin__模块)中的list类: ...

  10. python构造和析构_python魔法方法 构造和析构实例讲解

    目录: 一._ _init_ _(self[, ...]) 二._ _new_ _(cls[, ...]) 三._ _del_ _(self) 四.课时41课后习题及答案 说的那么厉害,那什么是魔法方 ...

最新文章

  1. A100 GPU硬件架构
  2. 优秀!这位70后硕士,入围中国工程院院士候选人!
  3. idea python-IDEA里如何安装Python插件打造开发环境(图文详解)
  4. SaltStack:Salt SSH
  5. 浙江农林大学第二十一届程序设计竞赛校选拔赛(同步)
  6. java 素数欧拉筛选_[C++]欧拉素数筛的理解与实现
  7. hibernate脏数据_Hibernate脏检查的剖析
  8. React脚手架学习笔记
  9. APP通用测试用例~易用性
  10. C# 控制台、接口、窗体使用BarTender打印标签 (亲测可用)
  11. SPSS卡方检验结果解读详解
  12. html css 窗口样式,简单的css样式网页
  13. Python:计算机视觉实现视频的AI换脸(最基础)
  14. go sync.once用法
  15. 如何将ts格式文件转成MP4格式文件
  16. Java学习-Thread
  17. xp系统计算机启动时灰色界面,XP系统任务管理器是灰色的打不开怎么办
  18. android硬编码h264数据,并使用rtp推送数据流,实现一个简单的直播-MediaCodec(二)
  19. 1.2 逻辑电路基础
  20. shopnc route.php,教你如何开启shopnc b2b2c 伪静态

热门文章

  1. 24.磁盘配额(Quota)
  2. 5. Mac phpstorm 快捷键
  3. matlab R2017b 初始化缓慢的问题
  4. Python中的get和set方法
  5. FastDFS+Nginx部署详细教程
  6. 在centos 7.0上利用yum一键安装mono
  7. Shell 批量复制文件名相近的文件到指定文件名中
  8. display:none与visibility:hidden的区别 ,还有html5的新属性hidden
  9. Java基础Lambda表达式【四】
  10. 经典排序算法(四)--基数排序Radix Sort