问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python3.0中sorted函数怎么用

发布网友 发布时间:2022-04-23 02:27

我来回答

1个回答

热心网友 时间:2022-04-06 15:47

【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 mole __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), ('jane', 'B', 12), ('dave', 'B', 10),]

用key函数排序:返回由tuple组成的list
Python代码
>>> sorted(students, key=lambda student : student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

用cmp函数排序
Python代码
>>> sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age
[('dave', 'B', 10), ('jane', '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), ('jane', '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)]
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王卡专属免流包是什么意思 腾讯王卡专属流量是什么意思 人防临空墙排烟机房可以留洞吗? 瑞士转机的问题? 雅阁、第九代凯美瑞、迈腾,大空间的中级车推荐 云顶之弈双人排位介绍 金铲铲之战 金铲铲段位相差多少可以一起打? 现在上海办理居住证需要本人去吗 34周加5天是几个月 孕34周是几个月了 孕34周如何预防早产 python中的filter()函数怎么用?特别是一个函数有多个输入参数时。_百度... 怎么用Python写mapreduce,请举例说明,初学者,请赐教,不胜感激 python中的filter函数怎么用 python map和reduce的用法 python自定义函数有哪些? 婴幼儿可以喝蜂蜜水吗? 婴儿不能吃蜂蜜水 孩子能不能喝蜂蜜水 有身份证,有银行卡号,但是没有银行卡可以打印流水吗?江苏农村商业银行的。 江苏银行SOP账户不正常9999钱能从柜台取出来吗 江苏银行查流水账单怎么收费 银行流水网上怎么打印 我要在手机银行里打印流水,怎么操作 江苏的银行卡可以在陕西打流水吗? 在银行的流水要怎么打印出来啊,是不是要去银行打印 江苏银行卡不要密码能打账单吗 江苏农村商业银行在上海可以打印银行流水嘛,如果可以具体去哪里可以打印? 在南京办的江苏银行卡,可以在镇江市这边打印一份6个月的流水吗? 江苏银行怎么打印近3年的对账单? 江苏村商业银行电子流水如何核印 关于Python中filter 和map这两个方法有区别吗?用法和结果都是一样... Python关于map和reduce的问题 python filter,map,reduce 是在什么模块里 为什么使用python map reduce 怎么用Python写mapreduce,初学者,请赐教 如何使用Python为Hadoop编写一个简单的MapReduce程序 黑鲨3屏幕不显示,充电有电流,开机震动下。这种情况是屏幕坏了,机子没问题吗? 黑鲨3手机内屏坏了还能值多少钱 一般用iphonex听歌,什么入耳式耳机比较好 黑鲨游戏手机2屏幕碎了怎么办? 黑鲨2手机玩着突然黑屏,按键啥的都没问题,小爱同学也可以用,可以正常关 ... 黑鲨2pro内屏坏了还可以退钱吗? 黑鲨手机碎屏去哪修,有的修吗 黑鲨3为什么打游戏屏幕有时不灵? 黑鲨屏幕碎了可以在实体店修吗?价格多少呢? 黑鲨外屏不小心摔坏了,保修期内,是免费换吗? 黑鲨2换屏得多少钱?听说还可以自己在淘宝买屏,自己换吗? 黑鲨helo手机屏幕和下面松开后咋搞维修需要多少钱 屏幕没有坏? 今年想去湖北利川避暑,大家有比较好的民宿推荐吗? 神农架木鱼镇住宿推荐