在 Python 3.x 的世界里,一些函数(sorted、min、max)不再支持 cmp 参数(用于对大小的定义)。

  • (1)sorted() 函数接口

    sorted(iterable, key=None, reverse=False) --> new sorted list
    
  • (2)min()/max()函数接口(有两个重载)

    min(iterable, *[, default=obj, key=func]) -> value
    min(arg1, arg2, *args, *[, key=func]) -> value
    

参数 key 用于指定用于比较的对象,key 其实是一个函数,接收的参数是前面的可迭代对象(iterables)中的每一个元素。

这里要注意的一点是,直接对字典对象迭代(也是sorted函数默认的做法)出来的元素不是 key-value 对,而是单独的key,最终的返回是由 key 构成的 list:

In [26]: dic={'b':3,'a':5,'c':9,'d':2}In [27]: for i in dic:....:     print(i)....:
d
c
a
b
In [28]: sorted(dic)
Out[28]: ['a', 'b', 'c', 'd']

所以无论如何指定 key(甚至会报错),都无法实现根据 value 进行比较:

In [29]: sorted(dic, key=lambda x: x[1])
IndexError: string index out of range# 对key(函数)传递进来的参数是 # 单独的 'a', 'b', 'c', 'd'(而不是键值对)# 自然索引 x[1] 索引非法

所以如果想指定根据 value 值进行比较,必须改变字典对象的迭代对象:

In [30]: sorted(dic.items(), key=lambda x: x[1])
Out[30]: [('d', 2), ('b', 3), ('a', 5), ('c', 9)]

想用第二个关键字排过序后再用第一个关键字进行排序呢?(默认如果为二元 或多元的话,先比较第一个,再比较第二个,依次类推,)

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> sorted(L, key=lambda x:(x[1],x[0]))
>>> [('c', 2), ('d', 2), ('b', 3), ('a', 4)]

1. 案例

  • 列表(list)中元素出现的次数:

    >> lst = [1, 1, 1, 2, 2, 3]
    >> sorted(set(lst), key=lst.count, reverse=True)# lst.count 为接收一个参数的函数,用于在 list 统计该参数出现的次数
    [1, 2, 3]
    
  • 对字典的 value 进行排序:

    >> d = {'a':3, 'b':2, 'c':1}
    >> sorted(d, key=d.get)
    ['c', 'b', 'a']
    

Python 基础 —— sorted相关推荐

  1. python sorted下标_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...

    长文预警! Python基础系列会将基础内容大致分为三到五个板块,每块着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python, ...

  2. python基础-列表排序sort和sorted

    [Python基础]列表排序sort和sorted 文章目录 [Python基础]列表排序sort和sorted 1. sort 2. sorted 3. 如何使用sort获得排序后的列表的副本呢? ...

  3. python基础教程是什么语言-0编程基础,什么语言也没学过,请问学Python怎样入门?...

    其实Python入门并不难,只要你有足够的自信心,明确学习目标,循序渐进就能不断享受到python带给你创新的乐趣. 大家为什么要学习python呢? 1.python简单易学 python的优势就是 ...

  4. python基础知识面试题-python的一些基本概念知识和面试题

    对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...

  5. python入门编程题库-Python随笔30:Python基础编程练习题25~26

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. Python编程 Python基础练习题25:合并两个列 ...

  6. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识

    1.1Python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制--在Python中,如果有一些对象需要持久性存 ...

  7. python基础入门视频-Python基础入门视频课程——笔记

    Python基础,主讲:汤小洋 一.Python简介 1. Python是什么? ​ Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(龟叔)于1989年 ...

  8. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

  9. 【Python基础教程】变量的作用域详解

    变量作用域 Python 能够改变变量作用域的代码段是 def . class . lamda. if/elif/else.try/except/finally.for/while 并不能涉及变量作用 ...

最新文章

  1. linux包之procps之sysctl命令
  2. 全球第三的晶圆代工厂 也要被卖了?
  3. jenkins部署java项目(五)
  4. 【Python-ML】电影评论数据集文本挖掘 -在线学习
  5. 使用 TypeScript 自定义装饰器给类的属性增添监听器 Listener
  6. 十大垃圾食品中八种可致脂肪肝
  7. DCMTK3.6.0 (MT支持库)安装 完整说明
  8. 基于golang的数据结构源码说明
  9. LED显示驱动(五):视频设备显示驱动调试步骤总结
  10. mysql数据库的使用与理解( 基于ubuntu 14.0.4 LTS 64位)
  11. 使用polar si9000计算差分阻抗
  12. IE9环境下。LODOP打印,首次打印时,图片加载不出来、加载不完全问题
  13. C#(Csharp)基础教程(上)(菜鸟教程笔记)
  14. “chmod 777-R 文件名”什么意思?
  15. 结构体自定义指针函数c语言,C语言结构体指针在函数调用中的使用
  16. 利用Windows 自带的任务计划功能设置闹钟
  17. 佰链荟作为协办单位举办“2021中国NFT与餐饮新思路高峰论坛”
  18. HTML5期末大作业:大学图书馆,XX大学图书馆--可自由更改名称
  19. 数据结构和算法-无权无向图
  20. python的逆袭之路_菜鸟逆袭之路:从月薪8千到2万,勇敢的去做改变才会成功

热门文章

  1. mysql导出所有binlog_mysql导入、导出、查看binlog命令
  2. 认识JWT(JSON WEB TOKEN)
  3. LeetCode 222. 完全二叉树的节点个数(递归)
  4. Linux安装python3.8时,编译过程中报错Could not build the ssl module!
  5. Qt总结之五:读写文件操作
  6. c语言中数字与字符串的转换
  7. opencv基础--特征提取与配准(SIFT系列)
  8. Redis3集群安装
  9. php unlink()函数使用
  10. linux php安装配置oci8模块