python3默認排序函數的多屬性比較
- 2020 年 1 月 2 日
- 筆記
前言
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的模,第二比較關鍵詞為元素大小
感想
函數返回多個值(元組比較合適)在很多場景下是一個十分好用的解決方案。