sorted()函数的key参数

sorted()函数的key参数

sort(*, key=None, reverse=False)
key 指定带有一个参数的函数来提取或计算一个值作为比较大小的标准

下面我们自定义一个Person类,可以看到如果不传入key参数,sorted()无法排序。

In [57]: class Person:
    ...:     def __init__(self,age,name):
    ...:         self.age=age
    ...:         self.name=name
    ...:     def __repr__(self):
    ...:         return 'name: %r, age:%r'%(self.name,self.age)
In [34]: def get_age(p):
    ...:     return p.age
    ...:
In [75]: age_name=list(zip(range(5,0,-1),'abcde'))

In [50]: p=[Person(age,name) for age, name in age_name]
In [77]: p
Out[77]:
[name: 'a', age:5,
 name: 'b', age:4,
 name: 'c', age:3,
 name: 'd', age:2,
 name: 'e', age:1]

In [61]: sorted(p)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-61-83b53198e181> in <module>
----> 1 sorted(p)

TypeError: '<' not supported between instances of 'Person' and 'Person'

In [78]: sorted(p,key=get_age)
Out[78]:
[name: 'e', age:1,
 name: 'd', age:2,
 name: 'c', age:3,
 name: 'b', age:4,
 name: 'a', age:5]

list.sort(),max(),min()也可以传入key参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值