ネストされた辞書とリスト内のキーの出現箇所をすべて検索する
この問題は、リストと辞書を含む、任意の深さのネストを持つ辞書を提示します。 。目標は、構造内のすべてのキー "id" の値を抽出することです。
解決策:
次の関数は、ネストされたデータ構造を横断するためのさまざまなアプローチを提供し、 "id" 値を取得します:
-
gen_dict_extract(k,o): この関数は、再帰ジェネレーターを利用して辞書とリストをナビゲートします。 「iteritems」関数が Python 2 と 3 の両方のバージョンを処理できるかどうかをチェックします。
-
find_all_items(k,o): 最初のアプローチと同様に、この関数は再帰と反復を使用して抽出します。 "id" 値。
-
findkeys(k,o): この関数は、"isinstance" メソッドを利用して、構造内のリストと辞書を識別します。ネストされた "for" ループを使用してデータを反復処理し、"id" キーを見つけます。
-
get_recursively(k,o): この関数は、再帰と内包の原則を組み合わせて、
-
find(k,o): この関数は、単純化された再帰的アプローチを利用して、辞書とリストを走査して「id」値を抽出します。
-
dict_extract(k,o): find 関数と同様に、この関数はもう少し単純な再帰的アプローチを使用して、構造体内の "id" 値を見つけます。
パフォーマンスの比較:
複雑な辞書オブジェクトに対して関数をテストした後、gen_dict_extract 関数が最も高速であることが判明しましたが、find_all_items 関数のパフォーマンスは大幅に低下しました。他の関数も同様のパフォーマンスを示しましたが、find と keyHole は文字列検索操作に限定されていました。
以上がネストされた辞書とリストで出現するキーをすべて検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。