【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ループでもリスト内包表記でも実装でき、データの絞り込みや前処理など、さまざまな場面で活用できる基本的なテクニックです。
-
Pythonで辞書のリストを値でソートする方法|sorted関数とlambdaの使い方
本記事では、複数の辞書を格納したリストを、各辞書が持つ値(value)に基づいて並べ替える方法を解説します。 サンプルとして使う辞書には、「name(名前)」と「roll(出席番号)」という2つのキーが含まれています。まずはPythonの組み込み関数 sorted() とラムダ式(lambda)を組み合わせて、roll の値で昇順にソートした結果を表示します。 続いて、name と roll の両方を組み合わせた条件でのソート、そして roll の値で降順にソートする方法まで、順番に見ていきましょう。 サンプルコード # 辞書のリストを初期化 my_list1 = [{ name : A
-
Pythonで辞書の値をキーにして辞書のリストを並べ替える方法
sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」