一般使用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)