cmp_to_key 此功能函數的歷史背景 及 演變過程
不太理解 文檔到底什麼意思,查看相關文檔,如下:
使用示例:
from functools import cmp_to_key
persons = [
{
'name': 'zhangsan',
'age': 20,
'grade': 98
},
{
'name': 'lisi',
'age': 18,
'grade': 88
},
{
'name': 'wangwu',
'age': 20,
'grade': 20
},
{
'name': 'yanqing',
'age': 15,
'grade': 20
},
{
'name': 'awu',
'age': 20,
'grade': 20
},
]
def cmp(a, b):
"""
如果返回的是一個大於0的值,那麼代表a>b
如果返回的是一個小於0的值,那麼代表a<b
如果返回的是一個等於0的值,那麼代表a=b
:param a:
:param b:
:return:
"""
if a['grade'] > b['grade']:
return 1
elif a['grade'] < b['grade']:
return -1
else:
if a['age'] > b['age']:
return 1
elif a['age'] < b['age']:
return -1
else:
if len(a['name']) > len(b['name']):
return 1
else:
return -1
persons.sort(key=cmp_to_key(cmp), reverse=True)
print(persons)
new_persons = sorted(persons, key=cmp_to_key(cmp), reverse=True)
print(new_persons)
相關鏈接:
https://docs.python.org/2/howto/sorting.html#the-old-way-using-the-cmp-parameter
https://docs.python.org/2/library/functools.html#functools.cmp_to_key
https://www.cnblogs.com/for-master/p/10281958.html
https://www.programcreek.com/python/example/102034/functools.cmp_to_key