ネストされたデータ構造内の特定のキーに関連付けられたすべての値を効率的に抽出する方法

Mary-Kate Olsen
リリース: 2024-11-10 10:51:03
オリジナル
682 人が閲覧しました

How to Efficiently Extract All Values Associated with a Specific Key in Nested Data Structures?

ネストされたデータ構造内のキーの出現箇所をすべて検索する

目的:
に関連付けられたすべての値を取得するネストされた辞書とリスト内の特定のキー。

問題ステートメント:
この辞書のような複雑なデータ構造を考えてみましょう:

{
    "id": "abcde",
    "key1": "blah",
    "key2": "blah blah",
    "nestedlist": [
        {
            "id": "qwerty",
            "nestednestedlist": [
                {
                    "id": "xyz",
                    "keyA": "blah blah blah"
                },
                {
                    "id": "fghi",
                    "keyZ": "blah blah blah"
                }
            ],
            "anothernestednestedlist": [
                {
                    "id": "asdf",
                    "keyQ": "blah blah"
                },
                {
                    "id": "yuiop",
                    "keyW": "blah"
                }
            ]
        }
    ]
}
ログイン後にコピー

目的は抽出することです「id」キーに関連付けられたすべての値。

解決策:
この複雑な構造から「id」値を走査して抽出するには、複数のアプローチを使用できます。一般的に使用される手法には、次のようなものがあります。

  • 再帰ジェネレーター関数: このメソッドは、ジェネレーター関数を使用してデータ構造を再帰的に走査し、「id」キーをチェックして、対応する値。
  • スタックを使用した深さ優先検索 (DFS): DFS アプローチは、スタックを使用して要素をスタックにプッシュし、先入れ後でアクセスして実装できます。
  • 再帰による深さ優先検索 (DFS): スタックの使用と同様に、再帰は、 DFS トラバーサル。関数自体が再帰的に呼び出され、データ構造のブランチを探索し、「id」キーを検索します。

パフォーマンスの比較:
効率的なアプローチとして、前述の手法は 100,000 回の反復を含む複雑なデータ構造でテストされました。パフォーマンスの結果、次のことが明らかになりました:

  • 最も速くて安全: gen_dict_extract
  • 最も遅く、最もエラーが発生しやすい: find_all_items
  • 中程度のパフォーマンス: findkeys、get_recursively、find、dict_extract

結論:
複雑なデータ構造を走査し、関連する値を抽出する場合特定のキーを使用する場合、gen_dict_extract のような再帰ジェネレーター関数を使用すると、最適な効率と信頼性が得られます。

以上がネストされたデータ構造内の特定のキーに関連付けられたすべての値を効率的に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート