首页 > 编程知识 正文

python中sorted和reversed,python中sort和reverse

时间:2023-05-04 10:50:36 阅读:196966 作者:2620

【Python】 sorted函数

我们需要对List、Dict进行排序,Python提供了两个方法

对给定的List L进行排序,

方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本

方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变

--------------------------------sorted---------------------------------------

>>> help(sorted)

Help on built-in function sorted in module __builtin__:

sorted(...)

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

---------------------------------sort----------------------------------------

>>> help(list.sort)

Help on method_descriptor:

sort(...)

L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;

cmp(x, y) -> -1, 0, 1

-----------------------------------------------------------------------------

iterable:是可迭代类型;

cmp:用于比较的函数,比较什么由key决定;

key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;

reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。

返回值:是一个经过排序的可迭代类型,与iterable一样。

参数说明:

(1) cmp参数

cmp接受一个函数,拿整形举例,形式为:

def f(a,b):

return a-b

如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了

(2) key参数

key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下

def f(a):

return len(a)

key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序

(3) reverse参数

接受False 或者True 表示是否逆序

例子:

(1)按照元素长度排序

L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]

def f(x):

return len(x)

sort(key=f)

print L

输出:

[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]

(2)按照每个字典元素里面key为1的元素的值排序

L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]

def f2(a,b):

return a[1]-b[1]

L.sort(cmp=f2)

print L

. 对由tuple组成的List排序

Python代码

>>> students = [('john', 'A', 15), ('快乐的夕阳', 'B', 12), ('dave', 'B', 10),]

用key函数排序:返回由tuple组成的list

Python代码

>>> sorted(students, key=lambda student : student[2]) # sort by age

[('dave', 'B', 10), ('快乐的夕阳', 'B', 12), ('john', 'A', 15)]

用cmp函数排序

Python代码

>>> sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age

[('dave', 'B', 10), ('快乐的夕阳', 'B', 12), ('john', 'A', 15)]

用 operator 函数来加快速度,

Python代码

>>> from operator import itemgetter, attrgetter

>>> sorted(students, key=itemgetter(2))

用 operator 函数进行多级排序

Python代码

>>> sorted(students, key=itemgetter(1,2)) # sort by grade then by age

[('john', 'A', 15), ('dave', 'B', 10), ('快乐的夕阳', 'B', 12)]

2. 对字典排序 ,返回由tuple组成的List,不再是字典。

Python代码

>>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4}

>>> sorted(d.iteritems(), key=itemgetter(1), reverse=True)

[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]

[转].Python中sorted函数的用法

[Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副 ...

python中sorted()函数的用法

一. 定义 sorted()函数对所有可迭代的对象进行排序操作 二. 语法 sorted(iterable [, key[, reverse]]]) iterable:可迭代对象 key:主要是用来进 ...

Python中sorted()方法的用法

Python中sorted()方法的用法 2012-12-24 22:01:14|  分类: Python |字号 订阅 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对i ...

Python中int()函数的用法浅析

int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int)  Help on class int in module __builti ...

Python中split()函数的用法及实际使用示例

Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...

python中range()函数的用法

python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...

python中strip函数的用法

python中往往使用剥除函数strip()来对用户的输入进行清理.strip函数的最一般形式为: str.strip('序列') 其中,序列是一段字符串,该函数表示从头或者从尾部开始进行扫描,如果扫 ...

python中open函数的用法

用法如下: name = open('errname.txt','w')name.readline()name.close() 1.看下第一行的代码 用来访问磁盘中存放的文件,可以进行读写等操作,例如 ...

python——掌握sorted函数的用法

看本篇文章的前提是掌握 00函数的基本概念.01函数参数传递方式 可参考本人博客文章 sorted函数 是一个内建函数,接收一个可迭代对象,按照指定类型.指定顺序进行排序,特点是返回一个新的列表,不改 ...

随机推荐

CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

关于Gridview的列名问题

Gridview的的数据绑定方法有两种: 一种就是datasourceid的绑定在绑定过程当中也可以通过select来选择性的绑定. 二种就是databind(): SqlDataAdapter da ...

ASP.NET MVC ValueProvider小结

在Model绑定中,Model的数据来源有很多种,在MVC里面则定义了一套ValueProvider的组件来处理Model数据来源多样性的问题,ValueProvider整个结构类似于字典(Dictr ...

PHP - 获取和设置include_path .

PHP - 获取和设置include_path 分类:             PHP              2011-02-16 13:19     2818人阅读     评论(1)     ...

SQL表格

LAMP - Linux  Apache MySQL PHP MySQL - 三个层次:文件层次,服务层次,界面 常用的数据类型:int 整数float double decimal 小数varcha ...

csuoj 1396: Erase Securely

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1396 1396: Erase Securely Time Limit: 1 Sec  Memory ...

java配置问题

先安装jdk.然后这样设置:**********************全为系统变量**************************变量名:JAVA_HOME变量值:D:Program File ...

linux 上不去网

linux 上不去网   ip dns无误 ping可以到达网关 可能原因 网卡睡眠 ethtool eht0  //查看eht0网口基本设置 mii-tool -w eth0

USACO Ordered Fractions

首先看一下题目 Consider the set of all reduced fractions between 0 and 1 inclusive with denominators less t ...

Spring注解IOC/DI(4)

2019-03-08/11:10:17 演示:使用注解的方式完成注入对象中的效果 注解参考链接:https://www.cnblogs.com/szlbm/p/5512931.html Spring中 ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。