dict = {'a':5 , 'b':4, 'c':3, 'd':3, 'e':1}
第二個是'b',有4次。聯合三分爲'c'和'd'三次。隨着字典隨着時間的推移而變化,比如說'f'加上了一個3的值,那麼第三個將會是'c','d'和'f'三次。在詞典中獲得第二和第三最高值
dict = {'a':5 , 'b':4, 'c':3, 'd':3, 'e':1}
第二個是'b',有4次。聯合三分爲'c'和'd'三次。隨着字典隨着時間的推移而變化,比如說'f'加上了一個3的值,那麼第三個將會是'c','d'和'f'三次。在詞典中獲得第二和第三最高值
只需創建一個元組值,然後對其進行排序。打印項目
d = {'a':5 , 'b':4, 'c':3, 'd':3, 'e':1}
x = sorted(((v,k) for k,v in d.items()))
print(x[-2][1])
print(x[-3][1])
結果:
b
d
(如果字典不具有至少3個項目將失敗)
或者直接用key
參數(避免數據重新排序)
x = sorted(d.items(),key=(lambda i: i[1]))
print(x[-2][0])
print(x[-3][0])
結果:
b
d
順便說一句,避免使用dict
作爲變量。
編輯:由於有幾個相同的值,你可能想要得到2秒的最佳值和相關的字母。你必須以不同的方式做。我想創建使用密鑰值,並存儲在一個列表中的默認列表,然後進行排序它在上面的代碼中完成:
import collections
d = {'a':5 , 'b':4, 'c':3, 'd':3, 'e':1}
dd = collections.defaultdict(list)
for k,v in d.items():
dd[v].append(k)
x = sorted(dd.items())
print(x[-2])
print(x[-3])
結果:
(4, ['b'])
(3, ['c', 'd'])
如果您使用了'collections.Counter ''你會得到'most_common'方法...... – jonrsharpe