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

Python实现树形字典的控制台分步遍历及回退功能需求

树形字典控制台遍历与回退实现方案

问题背景

现有如下树形字典结构:

[{
    "id": "id01",
    "system": 
                {
                "0": "initial question \n Choice A \n Choice B",
                "1": {"0": "Answer Choice A\n Second Choice C \n Second Choice D",
                      "1":"Final Answer Choice AC", 
                      "2":"Final Answer Choice AD"},
                "2": {"0": "Answer Choice B\n Second Choice A \n Second Choice B", 
                      "1": "Final Answer Choice BA", 
                      "2":"Final Answer Choice BB"}
                }         
}]

需要实现:

  • 控制台输入逐步遍历树形结构,选对应选项进入下一层,直到终点
  • 支持按R键逐步回退到上一层选择

当前代码无法满足需求,以下是可行实现方案:

实现代码

# 定义树形数据
data = [{
    "id": "id01",
    "system": 
                {
                "0": "initial question \n Choice A \n Choice B",
                "1": {"0": "Answer Choice A\n Second Choice C \n Second Choice D",
                      "1":"Final Answer Choice AC", 
                      "2":"Final Answer Choice AD"},
                "2": {"0": "Answer Choice B\n Second Choice A \n Second Choice B", 
                      "1": "Final Answer Choice BA", 
                      "2":"Final Answer Choice BB"}
                }         
}]

# 初始化当前节点和路径栈
current_node = data[0]["system"]
path_stack = [current_node]

# 打印初始问题
print(current_node["0"])

while True:
    user_input = input("Select an option (输入数字选择,输入R回退): ").strip().upper()
    
    # 处理回退逻辑
    if user_input == "R":
        if len(path_stack) > 1:
            path_stack.pop()
            current_node = path_stack[-1]
            print(current_node["0"])
        else:
            print("已经在最顶层,无法回退")
        continue
    
    # 处理选择逻辑
    if user_input in current_node:
        selected_value = current_node[user_input]
        # 判断是否进入下一层
        if isinstance(selected_value, dict):
            path_stack.append(selected_value)
            current_node = selected_value
            print(current_node["0"])
        else:
            # 到达终点,打印结果后回到初始层
            print(selected_value)
            print("路径结束,回到初始问题")
            current_node = data[0]["system"]
            path_stack = [current_node]
            print(current_node["0"])
    else:
        print("无效输入,请输入正确的选项数字或R")

核心逻辑说明

  • 路径栈管理:用path_stack记录每一层的节点,进入子节点时压栈,回退时出栈,确保能精准回到上一层状态
  • 节点类型判断:通过isinstance判断选中值是否为字典,区分是进入下一层还是到达终点
  • 输入处理:统一转大写处理R输入,避免大小写错误,同时验证输入是否在当前节点的有效键范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:13:19