Python で辞書のリストを検索する

  1. next() 関数を使用して、Python で辞書のリストを検索する
  2. Python の filter() 関数を使用して辞書のリストを検索する
  3. リスト内包表記を使用して Python で辞書のリストを検索する

このチュートリアルでは、Python で辞書のリストを検索するために使用できる方法を紹介します。

next() 関数を使用して、Python で辞書のリストを検索する

next() 関数を使用して、指定されたイテレータの次の項目として結果を提供できます。この方法では、すべての条件に対してプロセスをテストするために、for ループを使用する必要もあります。

次のコードは、next() 関数を使用して Python で辞書のリストを検索します。

Python
 pythonCopylstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]
print(next(x for x in lstdict if x["name"] == "Klaus"))
print(next(x for x in lstdict if x["name"] == "David"))

出力:

Python
 pythonCopy{'name': 'Klaus', 'age': 32}
Traceback (most recent call last):
  File "<string>", line 8, in <module>
StopIteration

このメソッドは、辞書のリストにすでに存在する名前を検索すると正常に実装されます。それでも、辞書のリストに存在しない名前を検索すると、StopIteration エラーが発生します。

ただし、この問題は上記のコードで簡単に処理できます。わずかに異なる API を使用して、デフォルトを微調整して提供するだけです。

Python
 pythonCopylstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]
print(next((x for x in lstdict if x["name"] == "David"), None))

出力:

Python
 pythonCopyNone

アイテム自体を見つけるのではなく、辞書のリストでアイテムのインデックスを見つけることもできます。これを実装するには、enumerate() 関数を使用できます。

次のコードは、next() 関数と enumerate() 関数を使用して、アイテムのインデックスを検索および検索します。

Python
 pythonCopylstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]
print(next((i for i, x in enumerate(lstdict) if x["name"] == "Kol"), None))

出力:

Python
 pythonCopy2

Python の filter() 関数を使用して辞書のリストを検索する

filter(function, sequence) 関数は、Python の sequencefunction を比較するために使用されます。関数に応じて、シーケンス内の各要素が真であるかどうかをチェックします。filter() 関数と lambda 関数を使用すると、辞書のリストでアイテムを簡単に検索できます。Python3 では、filter() 関数は filter クラスのオブジェクトを返します。list() 関数を使用して、そのオブジェクトをリストに変換できます。

次のコード例は、filter() 関数と lambda 関数を使用して、辞書のリストで特定の要素を検索する方法を示しています。

Python
 pythonCopylistOfDicts = [
     { "name": "Tommy", "age": 20 },
     { "name": "Markus", "age": 25 },
     { "name": "Pamela", "age": 27 },
     { "name": "Richard", "age": 22 }
]
list(filter(lambda item: item['name'] == 'Richard', listOfDicts))

出力:

Python
 pythonCopy[{'age': 22, 'name': 'Richard'}]

lambda 関数で filter() 関数を使用して、name キーが Richard と等しい要素の辞書のリストを検索しました。まず、辞書のリスト listOfDicts を初期化し、filter() 関数を使用して、lambda 関数 lambda item: item['name'] == 'Richard'に一致する値を検索しました。それ。最後に、list() 関数を使用して結果をリストに変換しました。

リスト内包表記を使用して Python で辞書のリストを検索する

リスト内包表記は、既存のリストの指定された値に基づいて形成されるリストを作成するための比較的短く、非常に優雅な方法です。

リスト内包表記を使用して、Python で辞書のリストを検索した結果を生成するリストを返すことができます。

次のコードは、リスト内包表記を使用して Python で辞書のリストを検索します。

Python
 pythonCopylstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]

print([x for x in lstdict if x['name'] == 'Klaus'][0])

出力:

Python
 pythonCopy{'name': 'Klaus', 'age': 32}

関連記事 - Python Dictionary

  • Python 辞書から要素を削除する方法
  • Python 辞書の値からキーを検索
  • 関連記事 - Python List

  • Python で文字列をリストに変換する
  • Python リストに値が存在するかどうかをすばやく確認する方法