0

要使用两列对元组列表进行排序,我会这样做:

t_l = sorted(t_l, key = lambda t_l: (t_l[-1], t_l[1]))

如何排序以使 t_l[-1] 按升序排列,这是默认值,但 t_l[1] 按降序排列?

使用 reverse = True 将按降序对两列进行排序。

有任何想法吗?

4

2 回答 2

0

如果任一列是数字,您可以反转其中一列的排序,或者也可以表示为数字。然后,您可以简单地否定数字列以反转该列的排序。

如果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]))
于 2013-05-10T17:01:51.603 回答
0

我在一个例子上尝试了一个简单的解决方案

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]]

是你要找的吗?

于 2013-05-10T17:05:52.857 回答