1. ホーム
  2. python

[解決済み] ディクショナリーで最大値を持つキーを取得する?

2022-03-18 10:34:27

質問

私は dictionary : キーは文字列、値は整数です。

stats = {'a':1000, 'b':3000, 'c': 100}

を取得したいと思います。 'b' というのは、このキーがより高い値を持つキーだからです。

キーと値のタプルを反転させた中間リストを使って、次のようにしました。

inverse = [(value, key) for key, value in stats.items()]
print max(inverse)[1]

そちらの方が良い(というか、よりエレガントな)アプローチなのでしょうか?

どのように解決するのですか?

を使用することができます。 operator.itemgetter を使用します。

import operator
stats = {'a':1000, 'b':3000, 'c': 100}
max(stats.iteritems(), key=operator.itemgetter(1))[0]

また、メモリ上に新しいリストを構築する代わりに stats.iteritems() . その key パラメータを max() 関数は、項目のランク付けを決定するためのキーを計算する関数である。

もし、別のキーと値のペア 'd' があった場合はご注意ください。3000 を返した場合、このメソッドは のうち が、両方とも最大値であるにもかかわらず

>>> import operator
>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000}
>>> max(stats.iteritems(), key=operator.itemgetter(1))[0]
'b' 

Python3を使っている場合。

>>> max(stats.items(), key=operator.itemgetter(1))[0]
'b'