python lambda函数排序_python之lambda定义匿名函数实现对list列表排序

u=3351532120,911952161&fm=173&app=25&f=JPEG?w=640&h=360&s=49108D1805585DC81CF835D60100C0B1

前言

关于匿名函数的使用及应用之前的文章也有讲过,本文再来讲解一个关于匿名函数的一个案例:使用匿名函数实现对list列表进行排序。

list.sort()函数

1、定义一个元素类型为整型的list列表,然后排序

u=842044523,2587970791&fm=173&app=25&f=JPEG?w=640&h=284&s=8145B34ACBA19B601659C4070000F0C2

运行结果是:

排序之前,list1列表中的内容: [10, 50, 20, 57, 90]

排序之后,list1列表中的内容: [10, 20, 50, 57, 90]

2、定义一个元素类型为字符串类型的list列表,然后排序

u=528990464,832652196&fm=173&app=25&f=JPEG?w=640&h=222&s=0149F34AEBE193704CE48007000070C2

运行结果是:

排序之前,list1列表中的内容: ['appen', 'HelloWorld', 'blog', 'Spring', 'MyBatis']

排序之后,list1列表中的内容: ['HelloWorld', 'MyBatis', 'Spring', 'appen', 'blog']

3、定义一个元素类型为字典的list列表,然后排序

u=3669778100,109110352&fm=173&app=25&f=JPEG?w=640&h=334&s=0149B34ADFE09F781CC5E5030000F0C2

运行结果是:

u=4233452528,1650959486&fm=173&app=25&f=JPEG?w=640&h=100

发现并没有排序,提示错误,原因是:"<"不支持字典与字典之间的排序。那么问题来了,这个sort函数到底是怎么做到排序的呢?

sort()函数讲解

刚才提到,对list列表中元素类型为字典的数据类型不支持排序,那么就有必要去查看一下sort()函数的说明文档。

u=3173591130,1560809324&fm=173&app=25&f=JPEG?w=639&h=116&s=456193424FE697700C79B80E000070C3

说明:

reverse : 是一个逻辑值,False表示升序排序,True表示降序排序。

key:默认值为None,表示如果不指定参数则直接使用list列表中的元素进行排序,而数字和字符串是可以自身排序的,所以没有问题。这个key也可以接收一个只带有一个参数的函数,作用是指定要比较的对象。

注意:

通过对sort()函数分析,发现如果一个列表中是字典类型,那么使用sort()函数就不能排序了,原因在于字典本身是不能排序,那么我们就可以给sort()函数通过key传递要比较的参数进而实现排序。

使用匿名函数对list列表排序

刚才提到了,这个sort()函数需要接受一个key参数,而这个key参数是需要接收一个函数,那使用匿名函数就可以解决问题。

需求:按照age进行升序排序。

u=4077604189,3123183976&fm=173&app=25&f=JPEG?w=640&h=420&s=0141B34AA3B496690245FC0E000070C2

运行结果:

排序之前,list1列表中的内容: [{'name': 'HelloWorld', 'age': 10}, {'name': 'Spring', 'age': 30}, {'name': 'append', 'age': 25}]

排序之后,list1列表中的内容: [{'name': 'HelloWorld', 'age': 10}, {'name': 'append', 'age': 25}, {'name': 'Spring', 'age': 30}]

分析:

给sort()函数传递一个匿名函数,这个匿名函数其实就是排序的依据,只是目前使用的age进行排序。

总结

以上就是关于使用匿名函数对list列表中是字典数据类型的一个排序案例,通过这个案例,我们应该可以去体会到匿名函数的简洁和实现代码的优雅,匿名函数需要特别的掌握哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值