python sorted函數自定義排序

一般使用sorted函數的時候,直接會將key設置爲一個lambda表達式的匿名函數。這樣一般可以直接對字典的key或者value進行排序。

但是今天刷leetcode的時候,需要對字典value的數組進行逐一排序,當value一致時,按key的字母順序排序。這時候就需要自定義比較方法了。

通過functools中的com_to_key將一個函數轉變爲參數key的值。

https://leetcode-cn.com/problems/rank-teams-by-votes/

def cmp(self, x, y):
		# x, y 爲items中的單個item, x[0]爲key, x[1]爲數組
		# 對x和y的數組進行逐位比較,當value完全一致時,再比較key的字母順序
        for a,b in zip(x[1],y[1]):
            if a > b:
                return 1
            elif b > a:
                return -1
        if x[0] < y[0]:
            return 1
        else:
            return -1

from functools import cmp_to_key
s = sorted(dic.items(), key=cmp_to_key(cmp), reverse=True)


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