首页  >  文章  >  后端开发  >  如何有效地提取与嵌套数据结构中特定键相关的所有值?

如何有效地提取与嵌套数据结构中特定键相关的所有值?

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_items
  • 中等性能: findkeys、get_recursively、find、dict_extract

结论:
用于遍历复杂的数据结构并提取关联的值对于特定的键,使用像 gen_dict_extract 这样的递归生成器函数可以提供最佳的效率和可靠性。

以上是如何有效地提取与嵌套数据结构中特定键相关的所有值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn