Python 基础 —— sorted
在 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相关推荐
- python sorted下标_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...
长文预警! Python基础系列会将基础内容大致分为三到五个板块,每块着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python, ...
- python基础-列表排序sort和sorted
[Python基础]列表排序sort和sorted 文章目录 [Python基础]列表排序sort和sorted 1. sort 2. sorted 3. 如何使用sort获得排序后的列表的副本呢? ...
- python基础教程是什么语言-0编程基础,什么语言也没学过,请问学Python怎样入门?...
其实Python入门并不难,只要你有足够的自信心,明确学习目标,循序渐进就能不断享受到python带给你创新的乐趣. 大家为什么要学习python呢? 1.python简单易学 python的优势就是 ...
- python基础知识面试题-python的一些基本概念知识和面试题
对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...
- python入门编程题库-Python随笔30:Python基础编程练习题25~26
注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. Python编程 Python基础练习题25:合并两个列 ...
- python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识
1.1Python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制--在Python中,如果有一些对象需要持久性存 ...
- python基础入门视频-Python基础入门视频课程——笔记
Python基础,主讲:汤小洋 一.Python简介 1. Python是什么? Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(龟叔)于1989年 ...
- 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...
第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...
- 【Python基础教程】变量的作用域详解
变量作用域 Python 能够改变变量作用域的代码段是 def . class . lamda. if/elif/else.try/except/finally.for/while 并不能涉及变量作用 ...
最新文章
- linux包之procps之sysctl命令
- 全球第三的晶圆代工厂 也要被卖了?
- jenkins部署java项目(五)
- 【Python-ML】电影评论数据集文本挖掘 -在线学习
- 使用 TypeScript 自定义装饰器给类的属性增添监听器 Listener
- 十大垃圾食品中八种可致脂肪肝
- DCMTK3.6.0 (MT支持库)安装 完整说明
- 基于golang的数据结构源码说明
- LED显示驱动(五):视频设备显示驱动调试步骤总结
- mysql数据库的使用与理解( 基于ubuntu 14.0.4 LTS 64位)
- 使用polar si9000计算差分阻抗
- IE9环境下。LODOP打印,首次打印时,图片加载不出来、加载不完全问题
- C#(Csharp)基础教程(上)(菜鸟教程笔记)
- “chmod 777-R 文件名”什么意思?
- 结构体自定义指针函数c语言,C语言结构体指针在函数调用中的使用
- 利用Windows 自带的任务计划功能设置闹钟
- 佰链荟作为协办单位举办“2021中国NFT与餐饮新思路高峰论坛”
- HTML5期末大作业:大学图书馆,XX大学图书馆--可自由更改名称
- 数据结构和算法-无权无向图
- python的逆袭之路_菜鸟逆袭之路:从月薪8千到2万,勇敢的去做改变才会成功
热门文章
- mysql导出所有binlog_mysql导入、导出、查看binlog命令
- 认识JWT(JSON WEB TOKEN)
- LeetCode 222. 完全二叉树的节点个数(递归)
- Linux安装python3.8时,编译过程中报错Could not build the ssl module!
- Qt总结之五:读写文件操作
- c语言中数字与字符串的转换
- opencv基础--特征提取与配准(SIFT系列)
- Redis3集群安装
- php unlink()函数使用
- linux php安装配置oci8模块