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下改动Matlab配置文件支持C++ 11标准以生成mex
进入matlab 输入mex -v命令查看当前配置 输入命令改动配置文件 命令: !sudo gedit /usr/local/MATLAB/R2013a/bin/mexopts.sh 加入下面蓝色内 ...
- Decoration6:改数据结构为继承的关系
一个家装市场有各种登录的角色:设计师.业主…… 这些角色有一些共同的字段,例如passWord,userName,age等等,但是分别又有自己的一些特殊字段,例如设计师要写自己的设计经历,业主可能要有 ...
- CWidgetMgr---H
/************************************************************************/ //管理部件 //部件自动根据Z顺序调整消息的优先 ...
- Nginx设置expires设定页面缓存时间 不缓存或一直使用缓存
配置expires expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求 要配置expires,可以在http段中或者server段中或者location段中加入 l ...
- Python操作Word【批量生成文章】
http://www.cnblogs.com/codex/p/4668396.html 需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同 ...
- lua工具库penlight--05日期和时间
创建和显示时间 Date类提过了简洁的使用date和time的方法.它依赖于os.date和os.time. Date对象可以通过table创建,如果os.date,同时提过了获取和设置date 成员 ...
- Android——Activity中的六个主要函数
Android Activity中的六个主要函数 Android中一个Activity一般都需要实现六个函数: onCreate(), onStart(), onResume(),onPause(), ...
- Github优秀开源项目
王潜升 https://github.com/code4craft/webmagic 一个爬虫框架,除了不会反爬虫外(当然可以自己加)其他都很牛逼.这个项目更新还是很快的. ansi分词 htt ...
- MongoDB(二):MongoDB简介及安装
一.MongoDB 1.简介 MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.旨在为WEB应用提供可扩展的高性能数据存储解决方案.在高负载的情况下,添加更多的节点(分布式 ...
- PHP多进程编程(3):多进程抓取网页的演示
我们知道,从父进程到子经常的数据传递相对比较容易一些,但是从子进程传递到父进程就比较的困难. 有很多办法实现进程交互,在php中比较方便的是 管道通信.当然,还可以通过 socket_pair 进行通 ...