一. 字典(字典在遍历时不能修改)
dict 用{}来表示 键值对数据 {key:value} 唯一性
键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键
值 没有任何限制
二.字典的增删改查
1.增加
(1) dic[key] = value #强制增加
dic.setdefault(key,value) 如果键在字典中存在不进行任何操作,否则就添加
可以通过key查询,没有这个key返回None
例题:
dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
dic['火女'] = '人头狗' # 新增
print(dic)
dic.setdefault('火女','安妮') # 如果在字典中存在就不进行任何操作,不存在就进行添加
dic.setdefault('火女','火男')
2.删除
pop(key) 有返回值 返回的是被删除value
del dic[key]
popitem() 随机删除
clear() 清空字典
例题:
dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
ret = dic.pop('易大师') #通过key删除 返回被删除的value
print(ret)
del dic['剑豪']#del 在字典里只能删除一个 或删除表(del dic)
dic.clear() #清空字典 {}
ret = dic.popitem() #随机删除 返回值 一个元组 (key,value)
print(ret)
3.修改
dic[key] = value #强制修改
dic.update(字典)#更新
例题:
dic['剑豪'] = '哈莎阁' # 强制修改
dic1 = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'}
dic1.update(dic)# 用dic 去更新dic1
print(dic1)
4.查询
get(key)#没有这个键的时候查询会报错
dic[key]#没有返回None 可以指定返回内容
for 循环 元组 键 值 键值对
setdefault(key)#没有返回None 可以指定返回内容
例题:
for i in dic:
print(i) #for 循环默认是获取字典中的键
print(dic['易大师父']) #查看1 没有这个键的时候查询会报错
print(dic.get('易大师','你傻啊,没有!')) #查看2 没有返回None 可以指定返回内容
print(dic.setdefault('易大师范湖')) #查看3 没有返回None
三.字典的其他操作:
keys 获取到所有的键存在一个高仿的列表中
values 获取到所有的值存在一个高仿的列表中
items 获取到所有的键值对已元祖的形式存在一个高仿的列表中
例题:
print(dic.keys()) # (高仿列表)
print(dic.values()) # (高仿列表)
print(dic.items())
for i in dic.keys():
print(i)
for i in dic:
print(i) #获取到字典中的每一个键
for i in dic.values():
print(i) #获取到字典中的每一个值
for i in dic.items():#键值对
print(i)
解构:
a,b = '12' #将后边解构打开按位置赋值给变量 支持 字符串 列表 元组
print(a)
print(b)
dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
for a,b in dic.items():
print(a)
print(b)
a,b = 1, 2
a,b = (1,2)
a,b = [1,2]
批量创建字典
dic1 = {}
dics = dic1.fromkeys([1,2,3],'abc')
四. 字典的嵌套:
dic = {
'name':'汪峰',
'age':43,
'wife':{
'name':'国际章',
'age':39,
'salary':100000
},
'baby':[
{'name':'熊大','age':18},
{'name':'熊二','age':15},
]
}
dic['baby'][0]['age'] = 19
print(dic)