Python全栈day13(作业讲解字典嵌套实现用户输入地址信息添加及查看)
要求:
列出字典对应节点名称,根据用户输入可以添加节点,查看节点等功能,这里以地址省-市-县等作为列子,此题熟悉字典嵌套功能
vim day13-16.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | db = {} path = [] while True : #定义临时字典temp temp = db #path默认是空列表根据进入的节点深度有对应的内容 for item in path: temp = temp[item] #列出节点下面对应的可选key值 print ( '当前可选节点' , list (temp.keys()), '\n' ) choice = input ( '1:添加节点;2:查看并进入节点(Q退出/返回上一级B) \n>>>' ) if choice = = '1' : k = input ( '请输入要添加的子节点名称:' ) if k in temp: print ( '节点已经存在' ) else : temp[k] = {} elif choice = = '2' : k = input ( '请输入要查看的子节点:' ) if k in temp: path.append(k) else : print ( '子节点名称错误' ) elif choice.lower() = = 'b' : if path: path.pop() elif choice.lower() = = 'q' : break else : print ( '输入不合法' ) print ( '字典和path值为:' ,db,path) |
执行步骤
一,第一次循环db为空 所以当前可选节点输出也为空
二,输入1添加一个节点江西对应的db值为{'江西': {}} path还是为空
同理在同一级下面再添加一个一级节点北京
三,输入2进入一级节点江西下面,db值没有变但是path值进过append方法添加了一条记录为["江西"],由于path有值使用执行了语句for item in path:然后把对应一级目录的字典值{}赋值给了temp所以当前可选节点为空
四,继续在一级节点江西下面添加两个节点分别为吉安和南昌,此时修改了对应的temp,temp对应的是字典db["江西"]所以db的值也会对应改变
五,继续进入下一级节点吉安,path的值变成了['江西', '吉安'],for循环执行了两次,第一次temp=["江西"]={'南昌': {}, '吉安': {}} 第二次 temp=["江西"]["吉安"]={}所以当前节点的可选节点为空,同理可以继续添加泰和等下一级节点
六,输入b退出本层节点,因为执行了pop删除的列表的最后一个元素所以path又变成["江西"]了,同理再输入一次b又执行一次pop就又回到第一层节点了
七,输入q则直接退出整个循环
通过这种字典嵌套的方法理论上可以实现无限字典嵌套字典
分类:
Python全栈开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!