python 列表sort函數和sorted函數應用————實現c++ sort按不同關鍵字排序功能

首先基本的應用請參考其它教程,百度很多。

現有列表ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)],要實現排序,排序規則爲:按元組第一個元素降序,如果元祖第一個元素相同按元祖第二個元祖升序。
import functools

def tcmp(x,y):
    #只能返回[-1,0,1]分別對應逆序,不變,升序
    if x[0]!=y[0]:
        #因爲排序默認爲升序排序,所以在x[0]>y[0]情況下,要想讓x[0]在y[0]前面
        #也就是逆序,所以要返回-1
        return -1 if x[0]>y[0] else 1
    elif x[1]!=y[1]:
        return 1 if x[1]>y[1] else -1
    else:
        #按原來順序
        return 0

if __name__=="__main__":
    ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)]
    ll.sort(key=functools.cmp_to_key(tcmp))#python3沒有cmp關鍵字,所以必須把cmp函數轉換爲key
    print(ll)

輸出:[(8, 9), (8, 20), (4, 3), (4, 5), (1, 1), (1, 2)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章