Python全棧day13(作業講解字典嵌套實現用戶輸入添加及查看)
阿新 • • 發佈:2017-12-27
語句 地址 技術 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(作業講解字典嵌套實現用戶輸入添加及查看)