Pythonディクショナリで最大値のキーを取得する
この投稿では、Pythonディクショナリで最大値のキーを返す方法について説明します。
アイデアは、組み込み関数を使用することです max()
、反復可能で最大のアイテムを返します。比較に使用される順序付け関数である追加のキー引数を取ります。この関数を使用するさまざまな方法は次のとおりです。
1.使用する operator.itemgetter()
関数
あなたは使用することができます dict.item()
辞書内のアイテムのリストを取得する関数と operator.itemgetter 注文機能として。これは、他の関数が最大値のキーのみを返すのに対し、他のアプローチに比べて最大値のアイテムを返すという利点があります。
1 2 3 4 5 6 7 8 9 10 11 |
import operator if __name__ == '__main__': d = {'A': 1, 'B': 2, 'C': 3} x = max(d.items(), key=operator.itemgetter(1)) print(x) #はペアを印刷します('C'、3) print(x[0]) #はキー「C」を出力します |
2.使用する dict.get()
関数
別のオプションは、 dict.get()
の鍵として機能する max()
ディクショナリイテレータがイテレータとして使用されている場合に最大値のキーを返す関数。
1 2 3 4 5 6 7 |
if __name__ == '__main__': d = {'A': 1, 'B': 2, 'C': 3} x = max(d, key=d.get) print(x) # C |
これはラムダ式を使用した代替バージョンです。
1 2 3 4 5 6 7 |
if __name__ == '__main__': d = {'A': 1, 'B': 2, 'C': 3} x = max(d, key=(lambda k: d[k])) print(x) # C |
3.逆辞書の使用
別のオプションは 辞書の各キー/値ペアを反転します。たとえば、辞書 { k1: v1, k2: v2, … , kn: vn}
辞書に変換する必要があります { v1: k1, v2: k2, … , vn: kn}
。これは、以下に示すように、辞書内包表記を使用して簡単に実行できます。
1 2 3 4 5 6 7 8 9 |
if __name__ == '__main__': d = {'A': 1, 'B': 2, 'C': 3} inv = {v: k for k, v in d.items()} x = inv[max(inv)] print(x) # C |
または、次のように書くこともできます。
1 2 3 4 5 6 7 8 9 |
if __name__ == '__main__': d = {'A': 1, 'B': 2, 'C': 3} m = max(d.values()) x = next(k for k, v in d.items() if v == m) print(x) # C |
これで、Pythonディクショナリで最大値のキーを取得できます。