3
鑑於這樣的字典和可變的最大鍵:獲取字典,而是低於可變
dic = {0 : 'some', 10 : 'values', 20 : 'whatever'}
var = 14
我想從其中關鍵是最大的,但低於或等於字典中獲得的價值變量。我不知道這是否清楚,但在這種情況下,我正在尋找10
。
我已經想出了這個函數,但我想知道是否有更簡單的方法來做到這一點,因爲我對Python很新。
def get_greatest_key(dic, var):
# if the key exists no need to search
if var in dic:
return dic[var]
else:
# create a list with all the keys sorted in reverse
l = sorted(dic, key=dic.get)
i = 0
while i < len(l):
# parse the list
if l[i] <= var:
return dic[l[i]]
i += 1
# by default we return the last element in the dictionary
return dic[l[len(l) - 1]]
如果你需要做很多,一個字典可能是錯誤的數據結構。我會建議一個平衡的BST,除非我不知道現有的Python實現。 – delnan
我建議使用[AVL樹](http://en.m.wikipedia.org/wiki/AVL_tree)代替。也就是說,或按鍵排序字典,並使用二進制搜索。 – Zyerah