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系统 ...
随机推荐
- Linux下磁盘管理命令df与du
Linux下磁盘管理命令df与du 对磁盘进行查看和控制的两个linux命令,df和du. 一.du命令 首先看一下du的help说明: [root@misdwh opt]# du --help ...
- [na]office 2010 2013卸载工具
http://www.ithome.com/html/soft/32777.htm Office 2003 || Office 2007 || Office 2010.
- 介绍CppShell
写在前面 bajdcc/CppShell 最近心血来潮又造了个轮子,其实启发我的是bajdcc/jMiniLang中的管道思想,java运行着太慢,因而用C艹实现一把. 如题图所示,使用非常非常简单. ...
- Mac下Selenium无法最大化Chrome解决方案
在用Selenium做自动化操作时,一般最大化浏览器的代码都是:driver.manage().window().maximize(), 但是在Mac下这样是无法最大化Chrome浏览器的,解决方法: ...
- poj2774(后缀数组水题)
http://poj.org/problem?id=2774 题意:给你两串字符,要你找出在这两串字符中都出现过的最长子串......... 思路:先用个分隔符将两个字符串连接起来,再用后缀数组求出h ...
- Servlet请求转发RequestDispatcher接口
在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应. 一,RequestDispatcher接口 ...
- Hive入门笔记---1.Hive简单介绍
1. Hive是什么 Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性.这是来自官方的解 ...
- [转]Python中函数的值传递和引用传递
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
- 小结:trie
复杂度: 查找O(n),维护O(n),空间O(sum(len[i])) 概要: 就是每个节点对应一个字母,然后儿子有26个,查找和维护时进入对应儿子即可. 应用:在字符串匹配中多模匹配做基础结构:可以 ...
- push an existing repository from the command line
git remote add origin https://github.com/gaoconggit/LandMVC.git git push -u origin master