首頁  >  文章  >  後端開發  >  如何有效地提取與嵌套資料結構中特定鍵相關的所有值?

如何有效地提取與嵌套資料結構中特定鍵相關的所有值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-10 10:51:03699瀏覽

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方法可以使用堆疊來實現,將元素推入堆疊,以先進後出的方式存取它們-out 順序,並在每一步搜尋「id」鍵。
  • 使用遞歸的深度優先搜尋(DFS): 與使用堆疊類似,遞歸可用於DFS 遍歷,函數遞歸調用自身來探索資料結構的分支並蒐索「id」鍵。

效能比較:
確定最為了實現高效的方法,上述技術在包含 100,000 次迭代的複雜資料結構上進行了測試。效能結果顯示以下內容:

  • 最快且最安全: gen_dict_extract
  • 最慢且最容易出錯: find_all_ms
  • 中等表現:
  • findkeys、get_recursively、find、dict_extract
結論:

用於遍歷複雜的資料結構並提取關聯的值對於特定的鍵,使用像gen_dict_extract的遞歸生成器函數可以提供最佳的效率和可靠性。

以上是如何有效地提取與嵌套資料結構中特定鍵相關的所有值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn