2012-12-30 14 views
19

私はすべてのdictの値で最大値であるdictキーを取得しようとしています。 私は2つの方法を見つけました。どちらも十分にエレガントではありません。最大値でdictキーを取得

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

max()keyパラメータを使用します。

max(d, key=d.get) 

デモ:

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

keyパラメータは関数を受け取り、かつ反復可能で、各エントリのために、それはのための1つを見つけることができますkey関数は最高値を返します。

+0

複数のキーがある場合はどうなりますか?最も価値のある最も長いキーを得るために 'len'を渡すことはできますか? – SiddharthaRT

+0

@SiddharthaRT: 'max(d、key = lamda k:(d [k]、len(k)))'はキーに 'lambda'を使うことができます。そのようなキーが複数ある場合、返されるキーの中で最も長いキーになります。 –

関連する問題