python 3 使用 __cmp__ 排序报错, 排序方法需要自己来实
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def __repr__(self):
return '(%s: %s)' % (self.name, self.score)
import functools # 排序引用包
def my_cmp(self, s):
"""
自定义排序方法
:param self:
:param s:
:return: 按照 成绩从大到小, 当相等后,安装字母 A - Z
"""
if self.score > s.score:
return -1
elif self.score < s.score:
return 1
else:
if self.name < s.name:
return -1
elif self.name > s.name:
return 1
else:
return 0
def testClassSort():
L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 77), Student('fbl', 88)] # 对象列表
print(sorted(L, key=functools.cmp_to_key(my_cmp))) # 调用自定义排序方法排序
运行结果 : [(Tim: 99), (Bob: 88), (fbl: 88), (Alice: 77)]