要使用两列对元组列表进行排序,我会这样做:
t_l = sorted(t_l, key = lambda t_l: (t_l[-1], t_l[1]))
如何排序以使 t_l[-1] 按升序排列,这是默认值,但 t_l[1] 按降序排列?
使用 reverse = True 将按降序对两列进行排序。
有任何想法吗?
要使用两列对元组列表进行排序,我会这样做:
t_l = sorted(t_l, key = lambda t_l: (t_l[-1], t_l[1]))
如何排序以使 t_l[-1] 按升序排列,这是默认值,但 t_l[1] 按降序排列?
使用 reverse = True 将按降序对两列进行排序。
有任何想法吗?
如果任一列是数字,您可以反转其中一列的排序,或者也可以表示为数字。然后,您可以简单地否定数字列以反转该列的排序。
如果t_l[-1]
列是数字,请使用:
sorted(t_l, key=lambda i: (-i[-1], i[1]))
(对输入列表和lambda
参数使用不同的名称可以减少混淆)
如果该列不是数字但另一列是,您仍然可以使用相同的技巧,但需要反转整个排序:
sorted(t_l, key=lambda i: (i[-1], -i[1]), reverse=True)
使用该函数可以将单字符列数字ord()
化;usingord()
将产生相同的排序顺序,但由于它是数字,您现在可以反转它:
sorted(t_l, key=lambda i: (-ord(i[-1]), i[1]))
我在一个例子上尝试了一个简单的解决方案
t_l = [[3,4,5,6,2,4,6],[6,7,3,4,5]]
t_l = [sorted(t_l[0], reverse = False),sorted(t_l[1], reverse = True)]
给
>>> t_l
[[2, 3, 4, 4, 5, 6, 6], [7, 6, 5, 4, 3]]
是你要找的吗?