排序使用兩列我做一個元組列表:排序按多個列,其中每個列是按照不同的順序
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