• 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()),'
    ')
    
        choice = input('1:添加节点;2:查看并进入节点(Q退出/返回上一级B) 
    >>>')
        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则直接退出整个循环

    通过这种字典嵌套的方法理论上可以实现无限字典嵌套字典

  • 相关阅读:
    HDU 树型dp
    NOIP模拟 Math
    HTML5本地存储LocalStorage和sessionStorage
    数据结构与算法第一章答案
    堆和队列的应用之——简单计算器
    HITCS-LAB1 Linux 下C工具的应用
    cs:app 第二章homework(已完结)
    vim使用小结(1)
    学术英语写作(1)
    linux基础(2)
  • 原文地址:https://www.cnblogs.com/minseo/p/8126015.html
Copyright © 2020-2023  润新知