一、特性
1.通过键值对来表示元素
2.key唯一且不可修改,若重复认为是同一个元素
二、增
1.dict_1={'key':'val1','key2':'val2'}
2.dict_2=dict(a=2,b=1)
3.list1=['a','b','c'] #key
list2=[1,2,3] #val
res=dict.fromkeys(list1,list2)
三、删(通过key)
1.del dict_1[‘key1’]
2.dict_1.pop(‘key1’)
会返回被删除key的value
3.删除最后一项(后进先出):dict.popitems()
会返回被删除key的value
4.清空字典:dict_1.clear()
四、改
1.key存在是修改,如果key不存在,会自动新增一个键值对
dict_1={'key':'val1','key2':'val2'}
dict_1['key']=888
2.dict_1.setdefault(‘key’,‘value’)
key存在不做任何操作,key不存在会新增键值对
3.dict_1.update(dict_2)
将dict_2合并到dict_1,若key存在覆盖value;若不存在则新增键值对到dict_1
五、查
通过key来拿val
dict_1={'key':'val1','key2':'val2'}
1. res=dict_1['key1']
#get 不会报错,没有值就是none,若字典本来有key3则返回原来的val
2. res2=dict_1.get('key3','val3')
3.dict_1.keys()
4.dict_1 .values()
5.dict_1.items()
六、深浅拷贝
1.浅拷贝:只会拷贝第一级目录,第二级目录引用地址
2.深拷贝:会拷贝第一级目录和第二级目录
浅拷贝的二级目录类似保存网址,只是有了地址,里面的内容会随着原来内容的变化而变化
深拷贝二级目录类似下载,有了新的内存地址,内容并不会变化
# 深拷贝
import copy
dict_2 = {'key1': 'val1', 'key2': 'val2','key3':[1,2,3,4]}
new_dict2=copy.deepcopy(dict_2)
print('老字典:',dict_2,id(dict_2))
print('新字典:',new_dict2,id(new_dict2))
dict_2['key3'].append('test')
print('老字典:',dict_2,id(dict_2))
print('新字典:',new_dict2,id(new_dict2))
print('='*50)
#浅拷贝
dict_1 = {'key1': 'val1', 'key2': 'val2','key3':[1,2,3,4]}
print(type(dict_1))
new_dict = dict_1.copy()
print('老字典:',dict_1,id(dict_1))
print('新字典:',new_dict,id(new_dict))
key3_value=dict_1['key3']
key3_value.append('test')
print(key3_value,type(key3_value))
print('老字典2:',dict_1,id(dict_1))
print('新字典2:',new_dict,id(new_dict))