ホームページ  >  記事  >  バックエンド開発  >  ネストされた辞書とリストで出現するキーをすべて検索するにはどうすればよいですか?

ネストされた辞書とリストで出現するキーをすべて検索するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-11 15:42:03821ブラウズ

How to Find All Occurrences of a Key in Nested Dictionaries and Lists?

ネストされた辞書とリスト内のキーの出現箇所をすべて検索する

この問題は、リストと辞書を含む、任意の深さのネストを持つ辞書を提示します。 。目標は、構造内のすべてのキー "id" の値を抽出することです。

解決策:

次の関数は、ネストされたデータ構造を横断するためのさまざまなアプローチを提供し、 "id" 値を取得します:

  1. gen_dict_extract(k,o): この関数は、再帰ジェネレーターを利用して辞書とリストをナビゲートします。 「iteritems」関数が Python 2 と 3 の両方のバージョンを処理できるかどうかをチェックします。
  2. find_all_items(k,o): 最初のアプローチと同様に、この関数は再帰と反復を使用して抽出します。 "id" 値。
  3. findkeys(k,o): この関数は、"isinstance" メソッドを利用して、構造内のリストと辞書を識別します。ネストされた "for" ループを使用してデータを反復処理し、"id" キーを見つけます。
  4. get_recursively(k,o): この関数は、再帰と内包の原則を組み合わせて、
  5. find(k,o): この関数は、単純化された再帰的アプローチを利用して、辞書とリストを走査して「id」値を抽出します。
  6. dict_extract(k,o): find 関数と同様に、この関数はもう少し単純な再帰的アプローチを使用して、構造体内の "id" 値を見つけます。

パフォーマンスの比較:

複雑な辞書オブジェクトに対して関数をテストした後、gen_dict_extract 関数が最も高速であることが判明しましたが、find_all_items 関数のパフォーマンスは大幅に低下しました。他の関数も同様のパフォーマンスを示しましたが、find と keyHole は文字列検索操作に限定されていました。

以上がネストされた辞書とリストで出現するキーをすべて検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。