首頁 >後端開發 >Python教學 >如何有效地提取嵌套字典和列表中某個鍵的所有出現?

如何有效地提取嵌套字典和列表中某個鍵的所有出現?

Patricia Arquette
Patricia Arquette原創
2024-11-13 01:46:02875瀏覽

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

如何在巢狀字典和清單中尋找某個鍵的所有出現

遍歷複雜的資料結構以提取特定值可能是一個常見的挑戰在程式設計中。本文解決了在深度嵌套的字典和列表結構中查找特定鍵的所有出現的問題,提供了詳細的解決方案和效能分析。

考慮一個由巢狀列表和字典組成的範例字典,類似於:

{
    "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」鍵的所有值,產生一個如下列表:

["abcde", "qwerty", "xyz", "fghi", "asdf", "yuiop"]

為了實現這一點,已經建議了各種方法,包括:

  1. gen_dict_extract: 一個遞歸函數,用於檢查字典、列表和字串,並在鍵匹配時產生值。 (最快且建議)
  2. find_all_items: 專門用於字典的類似遞歸函數。
  3. findkeys: 遞歸搜尋鍵的函數透過迭代字典。
  4. get_recursively: 使用遞歸提取值的通用函數。
  5. find: 類似 get_recursively 的簡潔遞歸函數.
  6. dict_extract: 使用巢狀循環結構、檢查字典和列表的函數。

效能分析顯示 gen_dict_extract 函數在速度方面優於其他函數,同時確保結構內的可靠性和對各種資料類型的支援。

以上是如何有效地提取嵌套字典和列表中某個鍵的所有出現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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