我有这个清单:
L = [(1, 'a'), (4, 'k'), (3, 'p'), (3, 'q'), (2, 'a'), (2, 'b'), (1, 'z')]
我想按每个元组的第 0 个元素按升序排序,然后按第 1 个元素按降序排序。有什么方法可以做到吗? 我可以使用一般方法:
L.sort(key=lambda x: (x[0], -x[1]))
但这是不可能的,因为字符串没有
-
操作。
我应该如何致电sort
来获取我需要的东西?
来获取单个字符的值。但是,如果您的数据包含多个字符的字符串,那么这就变得很笨拙。这种方法允许使用多字符(或仅单字符)字符串 因此:
L = [(1, 'a'), (4, 'k'), (3, 'p'), (3, 'q'), (2, 'a'), (2, 'b'), (1, 'z')]
L2 = sorted(set(t[1] for t in L), reverse=True)
def key(t):
a, b = t
return a, L2.index(b)
print(sorted(L, key=key))
[(1, 'z'), (1, 'a'), (2, 'b'), (2, 'a'), (3, 'q'), (3, 'p'), (4, 'k')]