如題,解決Python3中list自定義比較的問題。
1. 定義比較函數
def cmp(a, b):
2. 將其轉換爲鍵函數。下面的包裝解決了這一問題:
def cmp_to_key(mycmp):
class K:
def __init__(self, obj, *args):
self.obj = obj
def __lt__(self, other):
return mycmp(self.obj, other.obj) < 0
def __gt__(self, other):
return mycmp(self.obj, other.obj) > 0
def __eq__(self, other):
return mycmp(self.obj, other.obj) == 0
def __le__(self, other):
return mycmp(self.obj, other.obj) <= 0
def __ge__(self, other):
return mycmp(self.obj, other.obj) >= 0
def __ne__(self, other):
return mycmp(self.obj, other.obj) != 0
return K
3. 調用比進行比較
li_sort = sorted(li, key=cmp_to_key(cmp), reverse=True)