You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中遍历嵌套字典树并仅打印节点(如X1、X2)

嘿,这个问题我太熟了!遍历嵌套字典树提取X1、X2这类节点其实很简单,我给你两种Python里常用的实现思路,按需选就行:

方法一:递归遍历(简洁直观)

递归是处理树形结构最直观的方式,思路就是:遇到字典就继续深入遍历,遇到节点就输出/收集。

假设你的嵌套字典树长这样(我先写个示例方便演示):

sample_tree = {
    "X1": {
        "X2": "X3",
        "X4": {
            "X5": "X6"
        }
    },
    "X7": "X8"
}

递归实现的代码如下:

def traverse_recursive(tree):
    for key, value in tree.items():
        # 输出当前节点(key)
        print(key)
        # 如果值还是字典,递归遍历子树
        if isinstance(value, dict):
            traverse_recursive(value)
        # 如果值是叶子节点(比如X3、X6),同样输出
        else:
            print(value)

# 调用函数
traverse_recursive(sample_tree)

运行后会依次输出所有节点:X1、X2、X3、X4、X5、X6、X7、X8。

如果不想直接打印,而是把节点收集到列表里,稍微改一下就行:

nodes = []

def traverse_recursive_collect(tree, nodes_list):
    for key, value in tree.items():
        nodes_list.append(key)
        if isinstance(value, dict):
            traverse_recursive_collect(value, nodes_list)
        else:
            nodes_list.append(value)

traverse_recursive_collect(sample_tree, nodes)
print(nodes)  # 输出: ['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8']
方法二:迭代遍历(避免递归深度问题)

如果你的字典嵌套得特别深,递归可能会触发RecursionError(栈溢出),这时候用迭代的方式更稳妥,比如借助栈来实现:

def traverse_iterative(tree):
    # 用栈来保存待处理的字典
    stack = [tree]
    while stack:
        current_dict = stack.pop()
        for key, value in current_dict.items():
            print(key)
            if isinstance(value, dict):
                # 把子字典压入栈,后续处理
                stack.append(value)
            else:
                print(value)

# 调用函数
traverse_iterative(sample_tree)

这个方法和递归的效果完全一样,但不会有递归深度限制的问题,适合处理超大嵌套结构。

同样,要收集节点的话,把print换成append到列表即可,这里就不多写啦~

内容的提问来源于stack exchange,提问作者Swordfish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:32:04