Python で辞書のリストを検索する
-
next()
関数を使用して、Python で辞書のリストを検索する -
Python の
filter()
関数を使用して辞書のリストを検索する - リスト内包表記を使用して Python で辞書のリストを検索する
このチュートリアルでは、Python で辞書のリストを検索するために使用できる方法を紹介します。
next()
関数を使用して、Python で辞書のリストを検索する
next()
関数を使用して、指定されたイテレータの次の項目として結果を提供できます。この方法では、すべての条件に対してプロセスをテストするために、for
ループを使用する必要もあります。
次のコードは、next()
関数を使用して 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"))
出力:
pythonCopy{'name': 'Klaus', 'age': 32}
Traceback (most recent call last):
File "<string>", line 8, in <module>
StopIteration
このメソッドは、辞書のリストにすでに存在する名前を検索すると正常に実装されます。それでも、辞書のリストに存在しない名前を検索すると、StopIteration
エラーが発生します。
ただし、この問題は上記のコードで簡単に処理できます。わずかに異なる API を使用して、デフォルトを微調整して提供するだけです。
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))
出力:
pythonCopyNone
アイテム自体を見つけるのではなく、辞書のリストでアイテムのインデックスを見つけることもできます。これを実装するには、enumerate()
関数を使用できます。
次のコードは、next()
関数と enumerate()
関数を使用して、アイテムのインデックスを検索および検索します。
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))
出力:
pythonCopy2
Python の filter()
関数を使用して辞書のリストを検索する
filter(function, sequence)
関数は、Python の sequence
と function
を比較するために使用されます。関数に応じて、シーケンス内の各要素が真であるかどうかをチェックします。filter()
関数と lambda
関数を使用すると、辞書のリストでアイテムを簡単に検索できます。Python3 では、filter()
関数は filter
クラスのオブジェクトを返します。list()
関数を使用して、そのオブジェクトをリストに変換できます。
次のコード例は、filter()
関数と lambda
関数を使用して、辞書のリストで特定の要素を検索する方法を示しています。
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))
出力:
pythonCopy[{'age': 22, 'name': 'Richard'}]
lambda
関数で filter()
関数を使用して、name
キーが Richard
と等しい要素の辞書のリストを検索しました。まず、辞書のリスト listOfDicts
を初期化し、filter()
関数を使用して、lambda
関数 lambda item: item['name'] == 'Richard'
に一致する値を検索しました。それ。最後に、list()
関数を使用して結果をリストに変換しました。
リスト内包表記を使用して 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])
出力:
pythonCopy{'name': 'Klaus', 'age': 32}