【问题标题】:How to retrieve the depth of nested dictionaries in nested dictionaries in Python?如何在 Python 的嵌套字典中检索嵌套字典的深度?
【发布时间】:2021-12-29 23:52:06
【问题描述】:

我不确定我是否只是大脑受阻,或者这是否真的应该是一个挑战,但是如果不知道键,我无法弄清楚如何检查嵌套字典的深度。

这是我正在尝试做的一个例子(以最简单/有效的方式):

最理想的情况是,在不知道键和值的情况下,我可以通过某种方式来确定该字典的最大深度 -

nested_dict = {
  'nest1': {
    'nest2': {
       'nest3': 'val'
    },
    'unknown_key', 'val',
    'unknown_key': 'val'
  }
}

如果这有意义,请告诉我。

【问题讨论】:

  • 您可以查看字典的每个.values(),并测试这些值是否是字典。然后递归测试该字典的值。
  • 根据上下文,另一种数据结构(例如树)可能对存储数据更有用。
  • 我重新格式化了您的数据以突出显示第一个 'unknown_key' 和重复键的语法错误。
  • ... 如果您不想要递归解决方案,请使用队列来确定您需要探索哪些分支。即这是呼吸或深度优先搜索算法,恰好可以计算。
  • @9769953 Python 中的树形数据结构是什么样的?

标签: python python-3.x dictionary nested


【解决方案1】:

检查它是否是一个字典,如果是,遍历值并递归调用函数获取值的最大值。

PS : Dict 是语法错误,已修复

def max_depth(d):
    if isinstance(d, dict):
        return 1 + max((max_depth(value) for value in d.values()), default=0)
    return 0

nested_dict = {'nest1': {'nest2': {'nest3': 'val'}, 'unknown_key': 'val', 'unknown_key': 'val'}}


print(max_depth(nested_dict))

输出 3

【讨论】:

  • 非常感谢!这样做。这里是自学程序员,所以我对递归不太熟悉,但这很好用!
  • 很高兴知道它可以工作,玩弄代码以了解它是如何工作的,如果它帮助您可以选择将此解决方案标记为已接受@hdevs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2018-05-31
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
相关资源
最近更新 更多