sort函数和sorted函数的用法

sort

sort是list的一个属性方法,只适用列表,注意并不是任何的可迭代对象。 需要注意的是调用列表的sort方法是直接改变了列表的排序结构,就地排序无返回值。

原型:list.sort(fun, key = None, reverse = False)

  1. 参数fun表明sort是基于何种函数进行排序,默认是归并排序,归并排序的时间复杂度不错,一般情况下是不会重写的。
  2. key:一般用lambda函数(我自己的理解就是以很简洁的方式将一段代码块赋给一个参数)指定,如果需要自定义函数,需要导包functools,然后用cmp_to_key将其转化使用。
  3. 参数reverse是用来指定排序序列的,当reverse = True时,为降序。当reverse = False时,为升序。reverse参数默认为False。

注:sort里的lambda用法
L.sort(key = lambda x: (x[i],x[j])…)

python3的自定义函数(在python2中sort里有一个cmp参数,可直接进行自定义函数)不能直接传进去,需要将函数转化为key的形式(通过导入functools这个包)。

自定义函数格式

import functools

def compare(A, B): # 自定义函数,名字可以随便取,但函数中需要返回值。
	if ....
			return -1 # 此时表示A排在B左边。其实只要返回负值就表示该含义。
	elif...
			return 1 # 此时表示A排在B右边,其实只要返回正值就表示该含义。
	else...
			return 0 # 此时表示相等,就会访问的顺序进行排列
list L = ...
L.sort(key=functools.cmp_to_key(compare))

sorted

原型:sorted(utterable, key = None, reverse = False)

  1. 参数iterable是可迭代对象 注意sort只能对列表进行排序,而sorted可以对任何可迭代对象进行排序
  2. 参数key和reverse的用法与sort是相同的。

sorted对字典进行排序

dic = {2: 'D', 3: 'B', 1: ' C', 5: 'E', 4: 'A'}
print(sorted(dic)) #sorted默认是直接对字典的键进行排序
# 输出[1, 2, 3, 4, 5]
 
#当然也可以直接提取字典的值进行排序
print(sorted(dic.values()))
# 输出['A', 'B', 'C', 'D', 'E']

#如果相对键值对进行排序也可以将其转化为元组,然后再用lambda表达式进行排序
dic = {1: 'A', 2: 'C', 3: 'B', 4: 'E', 5: 'D'}
sorted(dic.items(), key=lambda x : (x[1]))
# 输出[(1, 'A'), (3, 'B'), (2, 'C'), (5, 'D'), (4, 'E')]

# 通过字典的某个属性值排序
lis = [{"name":"a", "grade":92}, {"name":"b", "grade":87}, {"name":"c", "grade":100}]
sorted(lis, key=lambda x :(x['grade']))
# 输出[{"name":"b", "grade":87}, {"name":"a", "grade":92}, {"name":"c", "grade":100}]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值