1. 程式人生 > >Python全棧day13(作業講解字典嵌套實現用戶輸入添加及查看)

Python全棧day13(作業講解字典嵌套實現用戶輸入添加及查看)

語句 地址 技術 list 輸入 ima 北京 ice lower

要求:

  列出字典對應節點名稱,根據用戶輸入可以添加節點,查看節點等功能,這裏以地址省-市-縣等作為列子,此題熟悉字典嵌套功能

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(作業講解字典嵌套實現用戶輸入添加及查看)