python学习--字典3

字典3是对字典2的优化,在测试当中发现字典2中的代码缺少对最后一层的判断处理,导致打印最后一层信息时,出现以下现象:

将最后一层的字符信息拆分打印,随意选择一个字符,则会报错退出。优化代码如下:

menu_list = {}
current_layer = {}

f = open("menu.txt",mode='r',encoding='utf8')
list_data = str(f.readlines())
#文件中读取的内容为字符类型,去取多余的字符 list_data
= list_data.strip("]").strip("[") list_data = list_data.strip("\"").strip("\"") #将str转成dict menu_list = eval(list_data) last_layer = [ menu_list ] current_layer = menu_list print(menu_list) while True: if isinstance(current_layer, dict): #加入对当前层级是否为dict(字典)的判断 for key in current_layer: print(key) else: print(current_layer) choice = input(">>:").strip() if len(choice) == 0:continue if choice in current_layer: if isinstance(current_layer, dict): #加入对当前层级是否为dict(字典)的判断 last_layer.append(current_layer) current_layer = current_layer[choice] else: print("当前层为最后一层") continue if choice == "b": if last_layer: current_layer = last_layer[-1] last_layer.pop() if choice == "q": exit()

字典的内容是从文件中读取,读取内容如下;

{'甘肃': {'兰州': {'城关区': {1: '甘肃地质博物馆', 2: '地球厅', 3: '矿物岩石厅'}, '七里河区': {1: '兰州碑林', 2: '碑轩', 3: '碑亭'}, '西固区': {1: '五一山生态旅游区', 2: '合欢', 3: '水杉', 4: '枇杷'}, '红古区': {1: '白塔山公园', 2: '象皮鼓', 3: '青铜钟', 4: '紫荆树'}}, '敦煌': {'沙州镇': {'敦煌莫高窟': '5A', '鸣沙山-月牙泉风景名胜区': '4A', '阳关遗址': '4A'}, '肃州镇': {'甘肃敦煌雅丹国家地质公园': '4A', '白马塔': '1A'}}}, '宁夏': {'中卫市': {'中宁': {'美食': '臊子面', '景点': '双龙寺', '特产': '枸杞'}, '中卫': {'美食': '馓子', '景点': '沙坡头', '特产': '羊皮筏子'}}, '吴忠': {'利通区': {1: '柴园村', 2: '李园村', 3: '石佛寺村'}, '青铜峡市': {1: '刘碱滩村', 2: '洼路沟村', 3: '二道桥村'}, '盐池县': {1: '杨岔村', 2: '吴家桥村', 3: '郭家桥村', 4: '刘家湾村'}, '同心县': {1: '山水沟村', 2: '清水沟村', 3: '涝河桥村', 4: '马家湾村'}}, '银川': {'银川市': {1: '海宝塔', 2: '华夏西部影视城', 3: '纳家户清真寺', 4: '中大寺和南关清真大寺'}, '西夏区': {'景区': '西夏王陵'}}}}
posted @ 2017-11-15 06:41  maoxiong  阅读(179)  评论(0编辑  收藏  举报