【10】Python學習筆記:簡單的多級目錄(字典巢狀)
阿新 • • 發佈:2019-02-05
簡單的多級目錄(字典巢狀)
# 建立多級目錄,具有增加節點,檢視節點,及返回上一級的功能 db = { '北京' : {}, '上海' : {}, '廣州' : { '天河區' : {}, '荔灣區' : {}, '白雲區' : { '白雲山' : {} } } } path = [] while True: temp = db for item in path: temp = temp[item] 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() == 'q': break elif choice.lower() == 'b': if path: path.pop() else: print('輸入不合法,請重新輸入\n>>>')
思路大致如下: 1. 建立多級字典(用於測試和驗證) 2. 該目錄具有增加節點,檢視節點,及返回上一級的功能,因此用變數choice來記錄操作 3. 為了便於在字典各級之間切換,建立列表path用於記錄路徑,path各元素的值就是字典對應各級的鍵,path的長度即字典當前節點的深度 4. 檢視節點時,將輸入的子節點名稱新增進path列表,並將path列表中的元素作為字典的索引。
k = input('請輸入要檢視的子節點:') if k in temp: path.append(k) else: print('子節點名稱錯誤')
由於當前節點深度可以大於1,因此需引入新的變數temp來進行迭代操作(用for對path列表中的各元素來重複進行字典索引, 即
temp = db
for item in path:
temp = temp[item]
print('當前所有可選節點:',list(temp.keys()),'\n')
5. 增加節點時,可以方便地利用剛才的temp變數來操作
choice = input("1:新增節點; 2:檢視節點(Q退出/B返回上一級)\n>>>") if choice == '1': k = input('請輸入要增加的子節點的名稱:') if k in temp: print('子節點已存在') else: temp[k] = {}
6. 返回上一級時,由於path列表用於記錄路徑,因此將path列表最後一個元素刪除,再重新列印即可
elif choice.lower() == 'b':
if path:
path.pop()
7. 退出時,即相當於執行break跳出while迴圈。