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

Python无依赖实现可交互多级字典的动态添加功能

实现动态多级字典的交互程序

下面是完全符合需求的Python实现方案:用栈结构跟踪当前所在的字典层级,通过交互式循环支持添加字符串、子字典、进入子层级、返回上级等操作,全程不依赖任何外部库,逻辑清晰适合新手理解。

完整代码

def main():
    # 初始化根结构,从cities节点开始
    root = {"cities": {}}
    # 用栈跟踪层级路径,每个元素是(父字典, 当前键)
    level_stack = [(root, "cities")]
    
    while True:
        # 获取当前操作的字典
        current_dict = level_stack[-1][0][level_stack[-1][1]]
        print("\n=== 当前层级内容 ===")
        # 打印当前层级的键和类型(区分字符串和子字典)
        for key, value in current_dict.items():
            value_type = "子字典" if isinstance(value, dict) else "字符串"
            display_value = value if isinstance(value, str) else ""
            print(f"- {key}: [{value_type}] {display_value}")
        
        # 显示操作选项
        print("\n操作选项:")
        print("1. 添加字符串值条目")
        print("2. 添加新子字典")
        print("3. 进入已有子字典")
        print("4. 返回上一级")
        print("5. 退出程序")
        
        choice = input("请输入选项编号:").strip()
        
        if choice == "1":
            # 添加字符串值
            key = input("请输入条目键名:").strip()
            if key in current_dict:
                print("该键已存在,请换一个键名!")
                continue
            value = input("请输入字符串值:").strip()
            current_dict[key] = value
            print(f"已添加条目:{key} = {value}")
        
        elif choice == "2":
            # 添加新子字典
            key = input("请输入子字典键名:").strip()
            if key in current_dict:
                print("该键已存在,请换一个键名!")
                continue
            current_dict[key] = {}
            print(f"已添加子字典:{key}")
        
        elif choice == "3":
            # 进入已有子字典
            key = input("请输入要进入的子字典键名:").strip()
            if key not in current_dict:
                print("该键不存在!")
                continue
            if not isinstance(current_dict[key], dict):
                print("该条目不是子字典,无法进入!")
                continue
            # 将当前层级压入栈,切换到子字典
            level_stack.append((current_dict, key))
            print(f"已进入子字典:{key}")
        
        elif choice == "4":
            # 返回上一级
            if len(level_stack) <= 1:
                print("已经在最顶层(cities节点),无法返回!")
                continue
            level_stack.pop()
            print("已返回上一级")
        
        elif choice == "5":
            # 退出并打印最终结构
            print("\n=== 最终字典结构 ===")
            print(root)
            break
        
        else:
            print("无效选项,请重新输入!")

if __name__ == "__main__":
    main()

关键逻辑说明

  • 层级跟踪:用level_stack栈保存路径,每个元素是(父字典, 当前键),取栈顶就能快速定位当前操作的字典,实现无限嵌套的层级切换。
  • 交互校验:对重复键、非字典条目进入等情况做了边界处理,避免程序出错,同时给用户明确提示。
  • 类型区分:用isinstance()判断值的类型,确保操作符合逻辑(比如只能进入子字典层级)。

操作示例

  1. 启动程序后,默认在cities层级,选择2添加子字典Beijing
  2. 选择3进入Beijing层级
  3. 选择1添加条目famous_university,值设为Peking University
  4. 选择2添加子字典high_schools
  5. 选择3进入high_schools,再选1添加NO.4 Middle School,值设为Top school in Beijing
  6. 多次选4返回顶层,最后选5退出,就能看到完整的多级字典结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:10:20