字典
基本概述:
字典用大括号{}括起来,内部使用key:value 来保存数据
例如{"Jay":"周杰伦","eason":"陈奕迅","JJ","林俊杰"}
字典的key是固定的,不可变的,就是说key可哈希,value则没有限制
key具有不等性,就是一个字典中的key不允许有相同的
字典的保存顺序不是按照我们自己的意愿来的,也可以认为是无序的
字典也可以进行遍历,但遍历结果为key
dic = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"} for el in dic: print(el)
打印结果为
基本操作:
增删改查
增加:
dict[一个不存在的key] = value, 表示把一个新的键值对加入到字典里,如果这个key已经存在,则会替换掉原来的key对应的value
dict.setdefault(key,value), 表示加一个新的键值对到字典,如果这个key已经存在,则不再继续保存
dic = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"}
dic["黑旋风"] = "李逵"
dic["及时雨"] = "宋江老大"
dic.setdefault("智多星","吴用")
print(dic)
执行结果为:
删除:
dict.pop(key), 删除key对应的键值对,返回的是key对应的value
dict.popitem(), 随机删除一对键值对,返回的是元组(key,value)
del dict[key], 删除key对应的键值对,有固定的格式
dic = {"牌牌":"你去哪里了", "晓雪":"你快回来.", "雪雪": "又走了"} ret = dic.pop("晓雪") # 删除一个元素. 返回这个元素的value值 print(ret) del dic["雪雪"] ret1 = dic.popitem() # 返回给你的是一个元组. print(ret1)
执行结果为:
修改:
dict[已有的key] = 新value, 表示将原有字典中key对应的value修改为新的value
dict1.update(dict2), 把dict2中的键值对更新到dict1中.如果dict2中的key已经在dict1中出现,那么将dict1中key对应的value替换为dict2中的,如果不存在,就添加一对键值对
dic1 = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"} dic2 = {"李晨": "范冰冰", "邓超": "孙俪", "王祖蓝": "李亚男"} dic1.update(dic2) print(dic1)
执行结果为:
查询:
dict[key], 查询key对应的value,如果没有的话,报错
dict.get(key,默认值), 查询key对应的value,如果没有的话,返回默认值,没有给默认值的情况下,返回None
dict.setdefault(key,value), 首先判断字典中有没有这个key,如果没有的话,新增到字典中,如果有的话,用这个key去字典中查询,返回查询的结果
dic = {"及时雨":"宋江", "易大师":"剑圣"} dic.setdefault("及时雨", "诺克萨斯") # 可以帮我们添加 print(dic) ret = dic.setdefault("及时雨123", "hello") print(ret) print(dic)
执行结果为:
常用方法:
keys(),values()和items()
dict.keys(), 拿到所有的key,返回key的集合,返回结果像是列表,但实际不是列表,但是可以执行列表的操作,并且可以进行迭代循环
dict.values(), 拿到所有的value,返回value的集合,返回结果像是列表,但实际不是列表,但是可以执行列表的操作,并且可以进行迭代循环
dict.items(), 拿到所有的键值对,返回结果像是列表,但里边的元素是元组
dic = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"} print(dic.keys()) print(dic.values()) print(dic.items())
执行结果为:
解构:
a,b = (1,2)
利用结构可以遍历dict
1 dic = {"及时雨":"宋江", "易大师":"剑圣", "维恩":"暗影猎手"} 2 print(dic.items()) 3 for k, v in dic.items(): 4 print(k , v)
执行结果为:
字典的嵌套:
ic = { "name":"汪峰", "age": 58, "wife":{ "name":"国际章", "salary": 180000, "age": 37 }, "children":[ {"name":"老大", "age": 18}, {"name":"老二", "age": 118} ] } print(dic["children"][1]["age"]) # 输出汪峰孩子老大的年纪 print(dic["wife"]['salary']) # 输出汪峰妻子的工资