特定の基準に基づいてリストから辞書を検索および取得する
Python では、辞書のリストを操作するのが一般的なタスクです。このようなシナリオの 1 つは、キーと値のペアに基づいて特定の辞書を検索して取得することです。
問題:
次の辞書のリストを考えてみましょう:
[ { "name": "Tom", "age": 10 }, { "name": "Mark", "age": 5 }, { "name": "Pam", "age": 7 } ]
「name」キーが に設定された辞書を検索して取得するにはどうすればよいですか? "Pam"?
解決策:
この問題を解決するには、以下に示すようにジェネレーター式を利用できます。
dicts = [ { "name": "Tom", "age": 10 }, { "name": "Mark", "age": 5 }, { "name": "Pam", "age": 7 }, { "name": "Dick", "age": 12 } ] result = next(item for item in dicts if item["name"] == "Pam")
ジェネレーター式は、リスト内の各辞書を反復処理し、その「name」キーが「Pam」と一致するかどうかを確認します。一致するものが見つかった場合は、対応する辞書が返され、結果変数に格納されます。 next() 関数は、最初に一致する項目が返されることを保証します。
たとえば、上記のコード スニペットを実行すると、次の辞書が取得されます。
{'age': 7, 'name': 'Pam'}
処理項目が見つかりません:
項目が見つからない場合は、少し異なるものを使用してデフォルトを提供することで処理できます。 API:
result = next((item for item in dicts if item["name"] == "Pam"), None)
None 引数により、一致する項目が見つからない場合に関数が None を返すようになります。
項目のインデックスの検索:
アイテム自体ではなく、一致するアイテムのインデックスを見つけるには、 enumerate() を利用できます。 function:
index = next((i for i, item in enumerate(dicts) if item["name"] == "Pam"), None)
enumerate() 関数は、各タプルにインデックスと項目が含まれるタプルの反復子を返します。ジェネレーター式は、この反復子を使用して最初に一致した項目のインデックスを検索し、インデックス変数に格納します。
以上がキーと値のマッチングに基づいて Python でリストから辞書を効率的に検索して取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。