ホームページ > バックエンド開発 > Python チュートリアル > キーと値のマッチングに基づいて Python でリストから辞書を効率的に検索して取得する方法

キーと値のマッチングに基づいて Python でリストから辞書を効率的に検索して取得する方法

Barbara Streisand
リリース: 2024-12-10 06:43:37
オリジナル
1059 人が閲覧しました

How to Efficiently Find and Retrieve a Dictionary from a List in Python Based on Key-Value Matching?

特定の基準に基づいてリストから辞書を検索および取得する

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート