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
参数