menu = { ‘北京‘: { ‘海淀‘: { ‘五道口‘: { ‘soho‘: {}, ‘网易‘: {}, ‘google‘: {}}, ‘中关村‘: { ‘爱奇艺‘: {}, ‘汽车之家‘: {}, ‘优酷‘: {} } } }, ‘上海‘: {}, ‘广东‘: { ‘广州‘: { ‘白云‘: { ‘白云山‘: {}, ‘广东外语外贸大学‘: {} }, ‘番禺‘: { ‘广州大学城‘: { ‘广东工业大学‘: { ‘第二食堂‘: { ‘鸡扒饭‘ }, ‘东十三前‘: { ‘情侣坡‘ } }, ‘华南理工大学‘: {}, ‘中山大学‘: {} } } }, ‘潮汕‘: { ‘揭阳‘: { ‘揭阳技术师范学院‘: {}, ‘揭阳理工学院(在建)‘: {}, }, ‘汕头‘: { ‘汕头大学‘: {} } } } }
递归方法:
def tri_menu(dic): while True: for k in dic: print(k) key = input(‘请输入地址:‘).strip() if key == ‘b‘ or key == ‘q‘: return key elif key in dic.keys() and dic[key]: ret = tri_menu(dic[key]) if ret == ‘q‘: return ‘q‘ tri_menu(menu)
堆栈方法:
li = [menu] while li: for key in li[-1]: print(key) k = input(‘请输入位置:‘).strip() if k in li[-1].keys() and li[-1][k]: li.append(li[-1][k]) elif k == ‘b‘: li.pop() elif k == ‘q‘: break else: continue
原文:https://www.cnblogs.com/xuminzgl/p/12025375.html