這是我在stackoverflow中的第一個問題。希望我很清楚。
我想轉換以下串列(按每個專案的第一個元素升序排序):
[[7, 4], [9, 4], [10, 1]]
進入這個(按每個專案的第二個元素降序排序,然后按第一個元素降序):
[[9, 4], [7, 4], [10, 1]]
我嘗試了 sort 屬性但沒有成功。有什么提示嗎?謝謝
uj5u.com熱心網友回復:
要自定義排序行為,您可以在or中提供key關鍵字引數。在 OP 的情況下,他們的引數應該是一個函式,它接收原始串列中的一個專案(即一對數字,如),然后回傳一對反轉的數字(即,)。我們需要反轉排序,因為默認情況下,and是從小到大排序的。sorted()list.sort()key[7, 4][4, 7]sorted()list.sort()
在https://docs.python.org/3/howto/sorting.html#key-functions中查看更多關于 python 排序的資訊,特別是key函式。
original = [[7, 4], [9, 4], [10, 1]]
desired = [[9, 4], [7, 4], [10, 1]]
original_sorted = sorted(
original,
key=lambda pair: (pair[1], pair[0]), reverse=True)
original_sorted == desired # True
是lambda一個函式。它相當于下面的函式。我們在這里使用 alambda是因為它很緊湊,我們不需要在其他任何地方參考這個函式。
def key_function(pair):
return pair[1], pair[0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411315.html
標籤:
上一篇:調整輸出表中的日期順序
