Python全栈day13(作业讲解字典嵌套实现用户输入添加及查看)

Posted minseo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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全栈之路Day20

2018-5-31-Python全栈开发day12-列表,字典,元组

Python全栈-Day07

Python全栈之路Day19

Python全栈-Day05

python全栈开发-列表元祖字典集合-7.13