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

Muhammad Maisam Abbas 2023年1月30日
  1. Python で next() 関数を使用して辞書のリストを検索する
  2. Python の filter() 関数を使用して辞書のリストを検索する
  3. Python でリスト内包表記を使用して辞書のリストを検索する
Python で辞書のリストを検索する

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

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

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

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

lstdict = [
    {"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"))

出力:

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

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

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

lstdict = [
    {"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))

出力:

None

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

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

lstdict = [
    {"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))

出力:

2

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

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

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

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

出力:

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

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

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

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

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

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

lstdict = [
    {"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])

出力:

{'name': 'Klaus', 'age': 32}
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Dictionary

関連記事 - Python List