2015-05-29 75 views
2

嵌套列表,排序由特定的邏輯嵌套列表 - Python的

A = [[2, 0], [1, 0], [4, 3], [3, 2], [5, 1]] 

我想它基於升序排序1st元素進行排序,即

result_A = [[2, 0], [1, 0], [5, 1], [3, 2], [4, 3]] 

1st元素常見於任何嵌套列表中,我試圖根據0th元素對其進行排序。所以,

required_A = [[1, 0], [2, 0], [5, 1], [3, 2], [4, 3]] 

這是我到目前爲止的代碼:

required_A = sorted(A, key=itemgetter(1)) 

我能夠基於1st元素進行排序,但我無能如何在不其餘的0th元素上再次對其進行排序訂單越來越混亂。謝謝!

+0

或只是'排序(A,鍵=拉姆達X:X [:: - 1])' – vaultah

回答

1

這顯示瞭如何修復您的itemgetter代碼。

>>> from operator import itemgetter 
>>> sorted(A, key=itemgetter(1, 0)) 
[[1, 0], [2, 0], [5, 1], [3, 2], [4, 3]] 

當多個參數傳遞到itemgetter,它返回一個可用於構造從一個給定的序列的元組與來自被到itemgetter提供作爲自變量的各索引值的函數。

元組與所有序列一樣,可以在Python中與lexicographically進行比較。這意味着他們將從左到右,按指數進行比較,直到一個序列超過另一個序列。這也意味着元組爲你的排序提供了很好的密鑰。

1

假設我們有個別子列表中的項目是相反的順序,我們可以直接對整個列表進行排序。因此,讓我們通知我們要考慮逆轉子表的sorted功能:

sorted(A, key=lambda x: list(reversed(x)) 
+0

你真的應該解釋如何你的答案作品:-) – kguest

+1

加了一點解釋。 – dlask