python3默認排序函數的多屬性比較

前言

Python3開始sorted函數和list.sort函數不再接收cmp作為參數,只使用key參數作為比較關鍵詞,這樣處理多屬性的比較就比較麻煩。

解決方案

一種有效的解決方案是key參數傳入比較函數,返回值是所需比較的多個屬性按優先順序排列的一個元組。

樣例程式碼

from random import randint  lst = [randint(0,1000) for x in range(20)]  sorted(lst,key= lambda x:(x % 5, x)) # 第一比較關鍵詞為除以5的模,第二比較關鍵詞為元素大小

感想

函數返回多個值(元組比較合適)在很多場景下是一個十分好用的解決方案。