sorted函数学习记录(sorted方法)

网友投稿 228 2022-09-04


sorted函数学习记录(sorted方法)

1、函数介绍

sorted(iterable, cmp=None, key=None, reverse=False)

sorted(iterable, key=None, reverse=False)

iterable:适合迭代的对象,实际上,任何具有__iter__()或__getitem__()方法的对象,Python就认为它是一个iterable。

Python里有大量内置的iterable类型,

如: list,str,tuple,dict,file,xrange等。

python3取消了sorted方法中的cmp参数

False,表示升序;True表示降序

a = [1,3,10,20,8]sorted(a)[1, 3, 8, 10, 20]

参数说明:

(1)iterable:

是可迭代类型;

(2)key

接受一个自定义函数,但参数只有一个,例如:

def f(s): #比如s是一个dict

return s[‘grade’]

sorted以将成绩等级作为关键字,对学生进行排序

(2)reverse

False,表示升序;True表示降序

# 2.1自定义keydef self_key(s): return s[1]# 分别对应:姓名,成绩等级,年龄S = [('XiaoWang', '1', 15), ('XiaoMing', '2', 12), ('XiaoLi', '4', 10), ('XiaoHong', '2', 10)]sorted(S, key = self_key) # 根据成绩等级排序#key:排序方案,sorted函数(内部)会把(可)迭代对象中的每一个元素拿出来交给后面key#后面的key计算出一个数字,作为这个当前元素的权重,整个函数会根据权重进行排序[('XiaoWang', '1', 15), ('XiaoMing', '2', 12), ('XiaoHong', '2', 10), ('XiaoLi', '4', 10)]

# 2.3 operator.itemgetter 函数# operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号。from operator import itemgettera = [1,2,3]f = itemgetter(1)#operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。f(a)2

from operator import itemgettera = [1,2,3]f = itemgetter(0,1)f(a)(1, 2)

# 2.4 用 itemgetter 函数作为 sorted 中的 keyfrom operator import itemgetterS = [('XiaoWang', '1', 15), ('XiaoMing', '2', 12), ('XiaoLi', '4', 10), ('XiaoHong', '2', 10)]print sorted(S, key = itemgetter(1)) # 将第1维(成绩等级)作为关键字结果和 key = self_key一致:[('XiaoWang', '1', 15), ('XiaoMing', '2', 12), ('XiaoHong', '2', 10), ('XiaoLi', '4', 10)]用 itemgetter 函数进行多级排序:from operator import itemgetterS = [('XiaoWang', '1', 15), ('XiaoMing', '2', 12), ('XiaoLi', '4', 10), ('XiaoHong', '2', 10)]print sorted(S, key = itemgetter(1, 2)) # 先按照成绩等级,再按照年龄结果:[('XiaoWang', '1', 15), ('XiaoHong', '2', 10), ('XiaoMing', '2', 12), ('XiaoLi', '4', 10)]2.5 对字典排序 ,先返回由 tuple 组成的 listfrom operator import itemgetterd = {'age1':15, 'age2':12, 'age3':10, 'age4':10}# print sorted(d.iteritems(), key=itemgetter(1))print sorted(d.items(), key=itemgetter(1))结果:[('age4', 10), ('age3', 10), ('age2', 12), ('age1', 15)]

from operator import itemgetterd = {'age1':15, 'age2':12, 'age3':10, 'age4':10}# print sorted(d.iteritems(), key=itemgetter(1))print(d.items())#items函数将字典转化为列表,列表当中每一个元素都是一个元组dict_items([('age1', 15), ('age2', 12), ('age3', 10), ('age4', 10)])


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【图像加密】基于小波变换结合混沌算法实现图像加密解密含Matlab源码
下一篇:【边缘检测】基于sobel、prewit、canny算法实现图像边缘检测含Matlab源码(图像边缘检测算法 matlab源码)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~