Closed1
同じ形式のdictの入った配列から条件にあうデータを抽出する方法
リスト内の辞書から特定条件に合うデータを効率的に抽出する
AWSのAPIのレスポンスで、結構こういう形式のがくるので、整理してみた。
やりたいこと
// これから
users = [
{"name": "A", "email": "hoge@.co.jp"},
{"name": "B", "email": "fuga@.co.jp"},
...
]
// こうしたい
userA_email = "hoge@.co.jp"
やり方① : ループと条件文を使用する
最も基本的な方法
ループを使用してリストを走査し、条件に一致するデータを抽出する。
userA_email = None
for user in users:
if user["name"] == "A":
userA_email = user["email"]
next
関数を使用する
やり方② : リスト内包表記とPythonicな方法
リスト内包表記とnext
関数を組み合わせ。
条件一致する要素を見つけたらループ終了するため効率的。
(要素が後ろの方か存在しない場合はだめだが)
userA_email = next((user["email"] for user in users if user["name"] == "A"), None)
やり方③ : 辞書内包表記を使用する
リストを一度辞書に変換してから、必要なデータを抽出する。
複数のデータを抽出する必要がある場合は便利。
users_dict = {user['name']: user['email'] for user in users}
userA_email = users_dict.get("A")
このスクラップは2024/03/22にクローズされました