
f = open("city.txt","r",encoding="utf-8") china_city = eval(f.read()) f.close() print("操作说明:增加》z,删除》del,进入》直接输入名称,返回上层》b") def quits(): import os print("感谢使用,再见!") os._exit(0) current_layer = china_city #拿出字典 parent_layer = [] #保存所有父级,最后一个元素永远都是父级 while True: for key in current_layer: print(key) choice = input("输入z增加地区>>>").strip() if len(choice) == 0:continue if choice in current_layer: parent_layer.append(current_layer)#在进入下一层之前,把当前层(也就是下一层父级) #下一层loop.当用户选择b的选择,就可以直接取列表的最后一个值出来就ok current_layer = current_layer[choice]#改成了子层 elif choice == "b": if parent_layer: current_layer = parent_layer.pop() elif choice == "q": quits() elif choice == "z": choice_2 = input("请输入地区名称>>>").strip() current_layer.setdefault(choice_2,{}) elif choice == "del": choice_2 = input("请输入删除地区>>>").strip() if choice_2 in current_layer: del current_layer[choice_2] elif choice == "save": current_layer = parent_layer.pop() current_layer = str(current_layer) print(current_layer) f = open("city.txt", "w", encoding="utf-8") f.write(current_layer) print("保存完毕,请继续!") f.close() current_layer = eval(current_layer) else: print("无此项!")
{'河北': {'石家庄': {'栾城', '正定'}, '衡水': {'武邑', '枣强'}}, '黑龙江省': {'哈尔滨': {'五常', '木兰'}, '佳木斯': {'东风', '同江'}}, '广西省': {'南宁': {'江南', '马山'}, '玉林': {'玉州', '兴业'}}, '纱南': {'大作': {}, '小左': {}}}