要使用两列我对元组列表进行排序:
t_l = sorted(t_l, key = lambda t_l: (t_l[-1], t_l[1]))
如何排序t_l [-1]按升序排序,这是默认值,但t_l [1]按降序排序?
使用reverse = True会按降序对两列进行排序。
有什么想法吗?
答案 0 :(得分: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()
函数可以将单字符列设为数字;使用ord()
将导致相同的排序顺序,但由于它是数字,您现在可以将其反转:
sorted(t_l, key=lambda i: (-ord(i[-1]), i[1]))
答案 1 :(得分: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]]
你在找什么?