Python全栈day13(作业讲解字典嵌套实现用户输入地址信息添加及查看)
要求:
列出字典对应节点名称,根据用户输入可以添加节点,查看节点等功能,这里以地址省-市-县等作为列子,此题熟悉字典嵌套功能
vim day13-16.py
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全栈day13(作业讲解字典嵌套实现用户输入地址信息添加及查看)的更多相关文章
- Python全栈day13(作业讲解根据用户输入选择输出字典内容)
题目,有一个动植物对应的字典内容如下,请根据用户输入列出对应的动物或者植物,实现字典三级菜单功能 dic = { "植物": {"草本植物": ["牵 ...
- Python 全栈开发:dict(字典)常用方法操作、dict嵌套
数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...
- python 全栈开发,Day5(字典,增删改查,其他操作方法)
一.字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.存储大量的数据,是关系型数据,查询数据快. 列表是从头遍历到尾字典使用二分查找 二分查找也称折半查找(Bi ...
- python全栈开发笔记---------数据类型---字典方法
def clear(self) 清空字典里所有元素 # info = { # "k1":18, # "k2":True, # "k3":[ ...
- python全栈开发笔记---------数据类型-----字典dict
字典 #dict #1.基本结构 info= { "k1" : "v1", #键值对 "k2" : "v2" } ### ...
- Python全栈之路----数据类型—字典
字典:可变,一种key-value的数据类型 info = { 'stu1101' : 'TengLan Wu' , 'stu1102' : 'LongZe Luola' , 'stu1103' : ...
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- Python全栈之路----目录
Module1 Python基本语法 Python全栈之路----编程基本情况介绍 Python全栈之路----常用数据类型--集合 Module2 数据类型.字符编码.文件操作 Python全栈之路 ...
- Python全栈day 01
Python全栈day 01 一.计算机认识 用户 软件,类似微信.QQ.游戏等应用程序,由程序员编写,在系统中运行,完成各种活动,方便人们使用. 操作系统,主要分为windows系统.Linux系统 ...
随机推荐
- Atitit.软件gui按钮and面板---os区-----linux windows搜索文件 文件夹
Atitit.软件gui按钮and面板---os区-----搜索文件 1. Find 1 2. 寻找目录 1 3. 2. Locate// everything 1 4. 3. Whereis (wi ...
- 怎么使用Less/Sass编译工具koala
怎么使用Less/Sass编译工具koala 如何使用Less/Sass编译工具koala 一.SASS调试插件的方法 如需调试功能,请在编译输出的时候输出debug信息,那样解析的css文件中就会包 ...
- glibc中malloc()的空间overhead
在linux下调用malloc()分配内存的时候,实际占用的内存与请求的内存尺寸的关系是什么呢,这个需要研究一下glibc中malloc()的实现.现在常见linux发行版中带的glibc中采用的都是 ...
- 【Java】验证码识别解决方案
对于类似以下简单的验证码的识别方案: 1. 2 3 4. 1.建库:切割验证码为单个字符,人工标记,比如:A. 2.识别:给一个验证码:切割为单个字符,在库中查询识别. /*** * author:c ...
- 等边三角形---dfs
蒜头君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到. 例如,蒜头君手上有长度为 11,22,33,33 的4根木棍,他可以让长度为11,22 的木棍组成一 ...
- c#开源项目[转]
一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...
- [driver]/lib/modules
两个路径: /lib/modules/4.1.6/updates/net/wireless/cfg80211.ko /lib/modules/4.1.6/modules.dep
- Qt之QThreadPool和QRunnable
简述 QRunnable 是所有 runnable 对象的基类,而 QThreadPool 类用于管理 QThreads 集合. QRunnable 类是一个接口,用于表示一个任务或要执行的代码,需要 ...
- oozie调度中的重试和手工rerun一个workflow
在oozie中有Bundle.Coordinator和Workflow三种类型的job,他们之间可以有以下包含关系. Bundle > Coordinator > Workflow. 1. ...
- Github优秀开源项目
王潜升 https://github.com/code4craft/webmagic 一个爬虫框架,除了不会反爬虫外(当然可以自己加)其他都很牛逼.这个项目更新还是很快的. ansi分词 htt ...