我有一個我想根據自己定義的比較進行排序的值字典。我知道你不能對字典進行排序。這裏是重要的代碼:根據python中的自定義比較器對字典項目進行排序
def cmpFirstVals(tup1,tup2):
if tup1[0] > tup2[0]:
return True
else:
return False
def cmpSecondVals(tup1,tup2):
if tup1[1] > tup2[1]:
return True
else:
return False
所以這兩個比較函數採用兩個int的兩個元組。它比較兩個元組,如果第一個元組更高,則返回true,因此如果使用第二個比較器,則(0,4)會高於(0,3)。同樣,
cmpFirstVals((4,2),(2,2))
會返回True。
我的字典是建立與字符串作爲鍵和兩個-INT元組的值:
d = {'objA':(1,12),'objB':(13,3)} //etc etc etc
我知道這是可能的列表d.items()排序,我最終將構建一個字典與排序列表中的前三個項目,但我需要使用這些比較器進行排序。
我需要知道如何通過這些比較器進行排序?
另外,請注意,如果兩個元組具有相同的索引值,比較器將返回false。 (即cmpFirstVals((4,2),(4,3))將返回FALSE)
專家提示:'expr1> expr2' *通常*已經產生一個布爾值。只需'返回tup1 [0]> tup2 [0]'就足夠了。如果自定義類型可能會從'__gt__'和朋友中返回其他內容,則使用'return bool(tup1 [0]> tup2 [0])'。不需要'如果exr:return True;否則:返回False冗長。 –