字典的定义
1 # Python语言中唯一的类型映射 2 # 键与值之间用“:”分开 3 # 项与项之间用“,”分开 4 person = {"name":"yuan","age":18} 5 print(person) # {'name': 'yuan', 'age': 18} 6 7 person = dict(name='yuan',age=18) 8 print(person) # {'name': 'yuan', 'age': 18} 9 10 person = dict({"name":"yuan","age":18}) 11 print(person) # {'name': 'yuan', 'age': 18}
字典的特性
1 # key-value结构 2 # key必须可hash、且必须为不可变数据类型、必须唯一 3 # 可存放任意多个值、可修改、可以不唯一 4 # 无序
字典的内置函数
长度、循环
1 # 字典 2 dic = { 3 "k1":"v1", 4 "k2":"v2" 5 } 6 # 长度 7 print(len(dic)) # 2 8 9 # 返回一个包含字典所有key的列表 10 k = dic.keys() 11 print(k) # dict_keys(['k1', 'k2']) 12 # 返回一个包含字典所有value的列表 13 v = dic.values() 14 print(v) # dict_values(['v1', 'v2']) 15 # 返回一个包含字典所有(键,值)元祖的列表 16 i = dic.items() 17 print(i) # dict_items([('k1', 'v1'), ('k2', 'v2')]) 18 # 循环 19 for k in dic.keys(): 20 print(k) 21 for k,v in dic.items(): 22 print(k) 23 print(v) 24 for k in dic: 25 print(k)
清空、复制、创建
1 # 清空 2 dic.clear() 3 print(dic) # {} 4 dic = { 5 "k1":"v1", 6 "k2":"v2" 7 } 8 # 复制 9 dic2 = dic.copy() 10 print(dic2) # {'k1': 'v1', 'k2': 'v2'} 11 # 根据序列,【创建字典】,并指定统一的值 12 dic2 = {}.fromkeys(["k1",56,"999"],123) 13 print(dic2) # {'k1': 123, 56: 123, '999': 123}
查看
1 # 字典 2 dic = { 3 "k1":"v1", 4 "k2":"v2" 5 } 6 # 根据key,获取字典中对应的值 7 # 若key不存在字典中,则报错 8 v = dic['k1'] 9 print(v) # v1 10 # 根据key,获取字典中对应的值 11 # 若key不存在字典中,则返回default的值 12 # dict.get(key,default = None) 13 v = dic.get("k1") 14 print(v) # v1
删除
1 # 字典 2 dic = { 3 "k1":"v1", 4 "k2":"v2", 5 "k4":"v4" 6 } 7 # 指定某一个key删除,并打印删除的元素 8 v = dic.pop("k1") 9 print(dic) # {'k2': 'v2', 'k4': 'v4'} 10 print(v) # v1 11 # 随机删除 12 k,v = dic.popitem() 13 print(dic) # {'k2': 'v2'} 14 print(k,v) # k4 v4
新增、修改
1 # 字典新增、修改 2 dic = { 3 "k1":"v1", 4 "k2":"v2" 5 } 6 # 若key在字典中不存在,则新增 7 # 若key在字典中存在,则更新 8 dic['kn'] = 'vn' 9 print(dic) # {'k1': 'v1', 'k2': 'v2', 'kn': 'vn'} 10 # 设置值,若key在字典中不存在,新增 11 # 若key在字典中存在,返回原来的值, 12 v = dic.setdefault("k3","123") 13 print(v) # 123 14 print(dic) # {'k1': 'v1', 'k2': 'v2', 'kn': 'vn', 'k3': '123'} 15 16 # dic.dic2将字典dic2的键值对添加到字典dic中 17 dic.update({"k2":"3546"}) 18 print(dic) # {'k1': 'v1', 'k2': '3546', 'kn': 'vn', 'k3': '123'} 19 dic.update(k2="789",k5 = 345) 20 print(dic) # {'k1': 'v1', 'k2': '789', 'kn': 'vn', 'k3': '123', 'k5': 345}
例题:三级菜单
需求: 可依次选择进入各子菜单 可从任意一层往回退到上一层 可从任意一层退出程序 所需新知识点:列表、字典
1 # 字典 2 menu = { 3 '北京':{ 4 '海淀':{ 5 '五道口':{ 6 'soho':{}, 7 '网易':{}, 8 'google':{} 9 }, 10 '中关村':{ 11 '爱奇艺':{}, 12 '汽车之家':{}, 13 'youku':{} 14 }, 15 '上地':{ 16 '百度':{} 17 } 18 }, 19 '昌平':{ 20 '沙河':{ 21 '老男孩':{}, 22 '北航':{} 23 }, 24 '天通苑':{}, 25 '回龙观':{} 26 }, 27 '朝阳':{}, 28 '东城':{} 29 }, 30 '上海':{ 31 '闵行':{ 32 '人民广场':{ 33 '炸鸡店':{} 34 } 35 }, 36 '闸北':{ 37 '火车战':{ 38 '携程':{} 39 } 40 }, 41 '浦东':{} 42 }, 43 '山东':{} 44 } 45 46 # 列表 47 list = [] 48 # 输入字母“q”为返回上一层, 49 # 输入字母“b”为退出 50 while len(list) < 4: 51 # 输出 52 lLength = len(list) 53 if lLength ==0: 54 iItem = menu 55 elif lLength == 1: 56 iItem = menu[list[0]] 57 elif lLength == 2: 58 iItem = menu[list[0]][list[1]] 59 elif lLength == 3: 60 iItem = menu[list[0]][list[1]][list[2]] 61 list_k = [] # 列表,用于存储,显示关键字 62 for k in iItem: 63 list_k.append(k) 64 # 判断子地区列表是否为空---开始 65 if len(list_k) == 0: 66 print("当前地区下,已无子地区可选") 67 break 68 else: 69 print(list_k) 70 dq = input("请输入要选择的地区:") 71 # 对输入内容进行判断---开始 72 if dq == 'q': 73 list.pop() 74 elif dq == 'b': 75 print("您已退出!") 76 break 77 elif dq in list_k: 78 list.append(dq) 79 else: 80 print("输入地区有误!") 81 break 82 # 对输入内容进行判断---结束 83 # 判断子地区列表是否为空---结束 84 else: 85 print("当前已无地区可选!") 86 print("---The end---")