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

【Python】リスト内の辞書を特定のキーの値でフィルタリングする方法

はじめに

リストに格納された複数の辞書を、特定のキーの値に基づいてフィルタリングしたい場面はよくあります。Pythonでは、条件を指定したシンプルな反復処理(ループ)を使うことで、この操作を簡単に実現できます。

本記事では、辞書のリストから「指定したキーの値が検索対象リストに含まれる要素」だけを抽出する方法を、具体的なコード例とともに解説します。

サンプルコード

以下は、キー「is」の値が検索リスト [1, 9, 8, 4, 5] のいずれかに一致する辞書のみを抽出する例です。

my_list = [{"Python": 2, "is": 4, "cool": 11},
{"Python": 5, "is": 1, "cool": 1},
{"Python": 7, "is": 3, "cool": 7},
{"Python": 9, "is": 9, "cool": 8},
{"Python": 4, "is": 10, "cool": 6}]

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

search_list = [1, 9, 8, 4, 5]

key = "is"

my_result = []

for sub in my_list:
if sub[key] in search_list:
my_result.append(sub)

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

実行結果

The list is :
[{'Python': 2, 'is': 4, 'cool': 11}, {'Python': 5, 'is': 1, 'cool': 1}, {'Python': 7, 'is': 3, 'cool': 7}, {'Python': 9, 'is': 9, 'cool': 8}, {'Python': 4, 'is': 10, 'cool': 6}]
The result is :
[{'Python': 2, 'is': 4, 'cool': 11}, {'Python': 5, 'is': 1, 'cool': 1}, {'Python': 9, 'is': 9, 'cool': 8}]

コードの解説

  • まず、複数の辞書を含むリストを定義し、コンソールに表示します。

  • 次に、検索対象となる整数値のリスト(search_list)と、フィルタリングの基準となるキー(key)を定義します。

  • 抽出結果を格納するための空のリスト(my_result)を用意します。

  • forループで元のリストを1つずつ走査し、各辞書のキー「is」の値が search_list に含まれているかどうかを in 演算子で判定します。

  • 条件に一致した要素だけが my_result に追加され、最終的にコンソールへ出力されます。

補足:リスト内包表記でより簡潔に書く

同じ処理は、リスト内包表記を使えば1行で記述することも可能です。

my_result = [sub for sub in my_list if sub[key] in search_list]

この書き方は可読性が高く、Pythonらしい簡潔なコードとして推奨されるスタイルです。処理速度も通常のforループとほぼ同等のため、実務でも広く利用されています。

まとめ

辞書のリストを特定のキーの値でフィルタリングするには、in 演算子と組み合わせた反復処理が有効です。単純なforループでもリスト内包表記でも実装でき、データの絞り込みや前処理など、さまざまな場面で活用できる基本的なテクニックです。

  1. Pythonで辞書のリストを値でソートする方法|sorted関数とlambdaの使い方

    本記事では、複数の辞書を格納したリストを、各辞書が持つ値(value)に基づいて並べ替える方法を解説します。 サンプルとして使う辞書には、「name(名前)」と「roll(出席番号)」という2つのキーが含まれています。まずはPythonの組み込み関数 sorted() とラムダ式(lambda)を組み合わせて、roll の値で昇順にソートした結果を表示します。 続いて、name と roll の両方を組み合わせた条件でのソート、そして roll の値で降順にソートする方法まで、順番に見ていきましょう。 サンプルコード # 辞書のリストを初期化 my_list1 = [{ name : A

  2. Pythonで辞書の値をキーにして辞書のリストを並べ替える方法

    sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」