2015-10-20 57 views
0
{'19': 3, '18': 7} 

如果我有一個像上面的列表,如何找到最大值,然後打印鍵,值對像:查找max和打印鍵,值對的字典

(['18'], 7) 
+3

爲什麼你在列表中有'18',是因爲你想在幾個鍵具有相同的最大值的情況下看到多個鍵? – zehnpaard

+0

哦,我看到謝謝@zehnpaard方式來讀取行之間... –

回答

2

有更多的Pythonic方法來做這些事情,但我希望這清楚地說明你的步驟。首先我們反轉字典。找出最大

data = {'19': 3, '18': 7} 
data_rev = dict([(value, key) for (key,value) in data.iteritems()]) 
print data_rev 

max_val = max(data_rev.keys()) 

如果你想看到它在一個單一的語句:

out_tuple = ([dict([(value, key) for (key,value) in data.iteritems()])[max(data.values())]], max(data.values())) 
3
print max(data.iteritems(),key=lambda x:x[-1]) 

可能?林真的不知道要誠實

2

最簡單的方法是隻迭代,並找到它:

max_pair = None 
for k,v in thedict.items(): 
    if (max_pair is None) or (v > max_pair[1]): 
     max_pair = (k,v) 

print max_pair 

但標準庫提供了一些更「Python化」的方式來獲取同一信息..

from functools import partial 
from operator import itemgetter 
print max(thedict.items(), key=partial(itemgetter, 1)) 

這裏假定你只想得到出現最大值的第一個鍵。相反,如果你想要所有出現最大值的鍵,你必須在兩遍(一次找到最大值,一次找到所有鍵)中做到這一點。

max_val = max(thedict.values()) 
max_pair = (tuple(k for k in thedict if thedict[k] == max_val), max_val)