排序使用两列我做一个元组列表:排序按多个列,其中每个列是按照不同的顺序
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()
函数进行数值计算;使用ord()
会导致同样的排序顺序,但因为它是数字,你现在可以扭转这种局面:
sorted(t_l, key=lambda i: (-ord(i[-1]), i[1]))
非常感谢您的详细回复。 – PythonRunner 2013-05-10 17:19:37
我尝试了上一个例子的简单的解决方案
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]]
是你在找什么?
如果其中一列是数字,那么你可以使用'-t_l [1]'作为它的关键。 – zch 2013-05-10 16:56:49
是否是任一列的数字? – 2013-05-10 16:58:36
谢谢zch。这正是我所做的。 – PythonRunner 2013-05-10 17:04:52