Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python – 辞書のリスト内でキーごとの値を最小値・最大値に制限する方法

辞書のリストに含まれる各キーに対して値の範囲を制限したい場合があります。そのようなときは、まず辞書のキーにアクセスし、組み込みの min メソッドと max メソッドを組み合わせることで、各キーに対応する値の最小値と最大値を簡単に抽出できます。

サンプルコード

以下に具体的な実装例を示します。

my_list = [{"python": 4, "is": 7, "best": 10},{"python": 2, "is": 5, "best": 9},{"python": 1, "is": 2, "best": 6}]

print("The list is :")
print(my_list)

my_result = dict()

keys = list(my_list[0].keys())

for my_elem in keys:

    my_result[my_elem] = [min(sub[my_elem] for sub in my_list), max(sub[my_elem] for sub in my_list)]

print("The result is :")
print(my_result)

出力結果

The list is :
[{'python': 4, 'is': 7, 'best': 10}, {'python': 2, 'is': 5, 'best': 9}, {'python': 1, 'is': 2, 'best': 6}]
The result is :
{'python': [1, 4], 'is': [2, 7], 'best': [6, 10]}

処理の流れと解説

  • まず、複数の辞書を要素として持つリストを定義し、コンソールに表示します。

  • 次に、結果を格納するための空の辞書を作成します。

  • keys() メソッドを使って最初の辞書からキー一覧を取得し、list() でリスト化して変数に保存します。

  • 取得したキーを順番に反復処理しながら、各キーに対応する値の最小値と最大値を求めます。

  • この際、ジェネレータ式 (sub[my_elem] for sub in my_list) を使うことで、リスト内のすべての辞書から該当キーの値を効率的に取り出しています。

  • 最終的に、各キーをキーとし、[最小値, 最大値] のペアを値とする辞書が完成し、コンソールに出力されます。

この手法を使えば、データセット全体の中で各項目が取りうる値の範囲をひと目で把握できるため、データの前処理やバリデーションの場面で非常に便利です。

  1. Pythonで辞書のすべての値を取得・出力する方法

    Pythonの辞書(dict)オブジェクトには、すべての値を簡単に取得できるvalues()メソッドが標準で用意されています。このメソッドを呼び出すと、辞書に格納された全ての値が dict_values オブジェクトとして返されます。values()メソッドを使う基本的な方法以下の例では、辞書 D1 のすべての値を values() メソッドで取得しています。戻り値はビューオブジェクトのため、リストとして扱いたい場合は list() 関数で変換すると便利です。>>> D1 = {1:a, 2:b, 3:c} >>> D1.values() dict_valu

  2. Pythonで辞書(dict)のすべてのキーを取得・表示する方法

    Pythonでは、辞書(dict)オブジェクトが持つ keys() メソッドを使うことで、すべてのキーを簡単に取得できます。このメソッドは辞書内の全キーを含むビューオブジェクト(dict_keys)を返します。 keys() メソッドでキーを取得する まずは基本的な使い方を見てみましょう。次の例では、3つのキーと値を持つ辞書から、すべてのキーを取り出しています。 >>> D1 = {1:a, 2:b, 3:c} >>> D1.keys() dict_keys([1, 2, 3]) >>> list(D1.keys()) [1, 2, 3]