2012-12-30 182 views
19

我想要得到的字典鍵,它的值是所有字典值的最大值。 我發現了兩種方式,都不夠優雅。獲取最大值的字典密鑰

d= {'a':2,'b':5,'c':3} 
# 1st way 
print [k for k in d.keys() if d[k] == max(d.values())][0] 
# 2nd way 
print Counter(d).most_common(1)[0][0] 

有沒有更好的方法?

回答

57

使用key參數max()

max(d, key=d.get) 

演示:

>>> d= {'a':2,'b':5,'c':3} 
>>> max(d, key=d.get) 
'b' 

key參數需要一個功能,並在迭代的每個條目,它會找到一個這key函數返回最高值。

+0

如果有多個鍵會怎麼樣?我可以通過說'len'來獲得價值最高的最長密鑰嗎? – SiddharthaRT

+0

@SiddharthaRT:你可以使用'lambda'作爲鍵:'max(d,key = lamda k:(d [k],len(k)))'將返回值最高的鍵,如果有不止一個這樣的關鍵,它將是那些返回的人中最長的關鍵。 –

相關問題