Python遞迴實現多層巢狀dict遍歷例項--三級選單/多級選單功能
要求:構建一個三(N)級選單,實現使用者可以根據指示選擇進入選單,退出選單,返回上層選單功能。
知識點:dict資料的遍歷方法,遞迴遍歷方法。
環境:Python3.6
實現程式碼:
#!/usr/bin/evn python # -*-coding:utf8 -*- class menu(object): def __init__(self, menus): self.menus = menus def view_dict(self,menu): print('請輸入進入地區,輸入"b"返回上層選單,輸入"q"退出'.center(40, '-')) print('\n'.join([str(key) for key in menu])) choice = input("請選擇>>:") if choice == 'q': exit() elif choice == 'b': if menu != self.menus: return else: print('已經是最頂層目錄,請選擇或退出,謝謝'.center(40,' ')) self.view_dict(menu) elif choice in [key for key in menu]: if type(menu[choice]).__name__=='dict': self.view_dict(menu[choice]) self.view_dict(menu) else: print('\n'.join([item for item in menu[choice]])) print('已經是最後一層,返回請輸入"b",退出請輸入"q",謝謝!'.center(40,'*')) self.view_dict(menu) else: print('請輸入正確口令,謝謝!') self.view_dict(menu) if __name__=='__main__': zone = { '山東': { '青島': ['四方', '黃島', '嶗山', '李滄', '城陽'], '濟南': ['歷城', '槐蔭', '高新', '長青', '章丘'], '煙臺': ['龍口', '萊山', '牟平', '蓬萊', '招遠'] }, '江蘇': { '蘇州': ['滄浪', '相城', '平江', '吳中', '崑山'], '南京': ['白下', '秦淮', '浦口', '棲霞', '江寧'], '無錫': ['崇安', '南長', '北塘', '錫山', '江陰'] }, '浙江': { '杭州': ['西湖', '江干', '下城', '上城', '濱江'], '寧波': ['海曙', '江東', '江北', '鎮海', '餘姚'], '溫州': ['鹿城', '龍灣', '樂清', '瑞安', '永嘉'] }, '安徽': { '合肥': ['蜀山', '廬陽', '包河', '經開', '新站'], '蕪湖': ['鏡湖', '鳩江', '無為', '三山', '南陵'], '蚌埠': ['蚌山', '龍子湖', '淮上', '懷遠', '固鎮'] }, '廣東': { '深圳': ['羅湖', '福田', '南山', '寶安', '布吉'], '廣州': ['天河', '珠海', '越秀', '白雲', '黃埔'], '東莞': ['莞城', '長安', '虎門', '萬江', '大朗'] }} view = menu(zone) view.view_dict(zone)
執行結果:
相關推薦
Python遞迴實現多層巢狀dict遍歷例項--三級選單/多級選單功能
要求:構建一個三(N)級選單,實現使用者可以根據指示選擇進入選單,退出選單,返回上層選單功能。知識點:dict資料的遍歷方法,遞迴遍歷方法。環境:Python3.6實現程式碼:#!/usr/bin/evn python # -*-coding:utf8 -*- class m
ThinkPHP5 資源巢狀分組路由配置方法(可以根據需要實現多層巢狀,注意:資源巢狀分組路由配置順序依次是巢狀層次遞減)
use think\Route; //資源巢狀分組路由配置方法(可以根據需要實現多層巢狀,注意:分組路由配置順序依次是巢狀層次遞減): // 更改巢狀資源路由blogs資源的資源變數名為blog_id //從表路由(分組路由配置順序必須是從表路由優先配置,否則從表路由一
ThinkPHP5 資源巢狀路由配置方法(可以根據需要實現多層巢狀)
use think\Route; //資源巢狀路由配置方法(可以根據需要實現多層巢狀): // 更改巢狀資源路由blogs資源的資源變數名為blog_id Route::resource('blogs','index/Blog',['var'=>['blogs'=&g
Binary Tree Postorder Traversal 非遞迴實現二叉樹後序遍歷
Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3 return
Python之路Python全域性變數與區域性變數、函式多層巢狀、函式遞迴 Python之路Python全域性變數與區域性變數、函式多層巢狀、函式遞迴
Python之路Python全域性變數與區域性變數、函式多層巢狀、函式遞迴 一、區域性變數與全域性變數 1、在子程式中定義的變數稱為區域性變數,在程式的一開始定義的變數稱為全域性變數。全域性變數作用域是整個程式,區域性變數作用域是定義該變數的子程式。 全域性變數
python多層巢狀轉換為一維列表
1.遞迴方式 [1,2,[3,[4,5],6]] def expand_list(nested_list): for item in nested_list: if isinstance(item, (list, tuple)): fo
Python列印多層巢狀列表
列表中巢狀列表 遞迴呼叫,將列表幾巢狀中的列表元素append到一個新列表中 如下列表 [ 1, 2, [ 3, 4, [ 5, 6,
python 簡單計算器遞迴演算法 多層括號處理
用python編寫一個簡單計算器 計算器開發需求 實現加減乘除及拓號優先順序解析 使用者輸入 # 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (
python中多層巢狀列表的拆分
場景:有一個多層巢狀的列表如:[[23],[3,3],[22,22],1,123,[[123,a],2]] 拆分成: def splitlist(list): ''' 現有一個列表,裡面元素包括 數字,字母,列表,字典等元素,現在要將字典去掉,並將列
多層巢狀後的 Fragment 懶載入實現
多層巢狀後的 Fragment 懶載入 印象中從 Feed 流應用流行開始,Fragment 懶載入變成了一個大家都需要關注的開發知識,關於 Fragment 的懶載入,網上有很多例子,GitHub 上也有很多例子,就連我自己在一年前也寫過相關的文章。
Python對商品屬性進行二次分類並輸出多層巢狀字典
題目有點長,感覺好像也解釋的不太清楚,但是大概意思就是,我們在逛一個網站的時候,譬如天貓,你會看到有“女裝”、“男鞋”、“手機”等等分類,點選進去又會有相應的品牌,女裝下面會有“snidle”、“伊芙麗”等品牌,男鞋下面會有“nike”、“adidas”等分類,
關於python中列表的遍歷和多層巢狀拆開(自用)
假設存在列表形如 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] ,則 使用遍歷查詢列表元素 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]; for
python 多層巢狀跳轉的方法
#跳轉 #Python 不支援 goto 和 label,想要在多層巢狀迴圈中跳轉,稍稍有些麻煩。最簡單的做法 #是設定跳轉標誌,並在相應位置檢查。 def test(): stop = False while True: while Tru
迴圈取多層巢狀的JsonArray中的值,最後一層可以是JsonArray也可以是jsonObject
/** * @param jsonStr json字串 * @param key 具體取值上一級對應的所有的 Key * @param value 具體取值對應的所有的key * @param type type 是最後一個key對應的是array還是jsonObject
php程式設計中require和include多層巢狀導致檔案找不到的錯誤
php中include和require可以包含其他檔案 但常引入的是一個相對路徑 如此會產生一個檔案,如下: 例如: (網站根目錄) ├資料夾A │ │ │ └1.php ├資料夾B │ │
Java多層巢狀異常處理的基本流程
異常是程式中的一些錯誤,但並不是所有的錯誤都是異常,錯誤有時候是可以避免的。異常的物件有兩個來源,一是Java執行時環境自動丟擲系統生成的異常,而不管你是否願意捕獲和處理,它總要被丟擲!比如除數為0的異常。二是程式設計師自己丟擲的異常,這個異常可以是程式設
上拉載入,包裹任意佈局,多層巢狀listview
上拉載入是在原生控制元件swipeRefreshlayout的基礎上增加的功能,實現方式網上copy就行。主要是refreshLayout包裹多層佈局,多個listview的時候,操作的是那個listview。程式碼可以看出所有上拉載入的操作均在佈局繪製完成,且資料載入完畢以後,能夠對
iOS開發-多層巢狀block中如何使用__weak和__strong
1、關於__weak __weak只能在ARC模式下使用,也只能修飾物件(比如NSString等),不能修飾基本資料型別(比如int等) __weak修飾的物件在block中不可以被重新賦值。 __weak只在ARC下使用,可以避免迴圈引用。 __weak修飾物
html中的超連結中比如有多層巢狀,就會導致字串被擷取,等等等等很多問題
html中的超連結中比如有多層巢狀,就會導致字串被擷取,等等等等很多問題 引號巢狀兩層時,可以使用轉義或者單雙引號交替的形式實現,當引號巢狀達到三四層的時候,問題就出現了,怎麼解決呢? 舉個例子:"javascript:fnabc('abcd("123")')" html的href=以上
scrapy 提取多層巢狀標籤下的所有文字
怎樣才能一次性提取多層巢狀標籤的所有文字,詳細如下: 假如頁面如下: <p id='test'>hello<b>world!</b></p> 我要的提取結果是:world!(假設world是很多標籤組合的文字)