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("无此项!")
{'河北': {'石家庄': {'栾城', '正定'}, '衡水': {'武邑', '枣强'}}, '黑龙江省': {'哈尔滨': {'五常', '木兰'}, '佳木斯': {'东风', '同江'}}, '广西省': {'南宁': {'江南', '马山'}, '玉林': {'玉州', '兴业'}}, '纱南': {'大作': {}, '小左': {}}}
附件-city.txt