python sorted函數多條件排序是怎么回事



  首先,要知道sorted 內部實現使用了歸並排序,而歸並排序是穩定的排序,就是說當元素比不出大小時,其相對位置是不變的。


  那么,利用穩定排序的特性,key函數有幾個返回值就排序幾次,先排序次要條件,后排序主要條件,用主要條件覆蓋次要條件,主要條件相同時,又不會改變之前排好的次要條件的相對位置,就實現了多條件排序。

  給我們的直觀效果是,主要條件排不出先后順序的元素,就按照次要條件排序。

 

  在python中具體是如何實現的呢?

  sorted(iterable, key, reverse)

  key參數,接收一個函數地址,用來設置排序條件,這里我們經常使用匿名函數。

  iterable的每一個元素作為參數傳入key函數,key函數的返回值就是排序依據,當返回值為一個元祖時,這個元祖中的多個元素即為多個排序條件,從前到后重要程度依次降低。

 

  下面的例子,演示按照元素第三位、第二位、第一位的字典順序這三個條件對列表進行排序。

lis = ['a1b', 'a2a', 'a3b', 'b5d', 'a4f', 'c3f', 'b3f', 'a6f', 'c1f', 'a1a']
print(sorted(lis, key=lambda x: (x[2], x[1], x[0])))

  排序結果:['a1a', 'a2a', 'a1b', 'a3b', 'b5d', 'c1f', 'b3f', 'c3f', 'a4f', 'a6f']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM