a=[('a',1,3,'f'),('b',1,2,'f'),('c',3,1,'m')]
要求按 4 升序、1 降序、2 升序、3 降序的优先规则进行排序
请问该如何写,谢谢。
1
xpresslink 2019-05-13 16:58:53 +08:00
from functools import cmp_to_key
def keyfunc(x,y): □□□□if x[3] > y[3]: □□□□□□□□return 1 □□□□elif x[3] < y[3]: □□□□□□□□return -1 □□□□elif x[0] < y[0]: □□□□□□□□return 1 □□□□elif x[0] > y[0]: □□□□□□□□return -1 □□□□elif x[1] > y[1]: □□□□□□□□return 1 □□□□elif x[1] < y[1]: □□□□□□□□return -1 □□□□elif x[2] < y[2]: □□□□□□□□return 1 □□□□elif x[2] > y[2]: □□□□□□□□return -1 □□□□else: □□□□□□□□return 0 a=[('a',1,3,'f'),('b',1,2,'f'),('c',3,1,'m')] print(sorted(a, key=cmp_to_key(keyfunc))) # [('b', 1, 2, 'f'), ('a', 1, 3, 'f'), ('c', 3, 1, 'm')] |