不可变数据类型: 元组、bool、int、str (也称做 可哈希)python
可变数据类型: list、dict、set(集合,集合可变,内元素不可变) (也称做 不可哈希) 函数
字典是python中唯一的的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,因此字典是无需存储的,且key必须是可哈希的。spa
dict 优势: 字典当中的元素是经过键来存取的,而不是经过偏移存取。二分查找去查询,存储大量的关系型数据。code
一、直接键值对增长,没有相同k值时直接添加,k值已经存在,则v值覆盖。blog
二、经过 setdefault(self,k,v=None)添加,k值没有时,直接添加,k值已经存在,则不作任何改变,v值默认为 Noneip
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} dic['age'] = 76 dic.setdefault('qw') dic.setdefault('ty',45) {'qw': None, 'sex': 'male', 'ty': 45, 'name': 'jin', 'age': 76}
删:
一、pop(self,k:_KT) 按键去删除,有返回值,若是k值原本存在,返回k值对应的v值,若是k值不存在,默认返回None,能够设置v值为任何形式。get
二、popitem(self) 随机删除一个键值对,有返回值,元组形式出现,删除的键值对it
三、clear 清空字典class
dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'high': 175} print(dic.pop('age',)) print(dic.pop('ages',{'ssss':1})) print(dic.popitem()) dic.clear() 18 {'ssss': 1} ('name', 'jin') {}
改:date
一、直接覆盖
二、update() dic_2.update(dic_1) 覆盖添加
dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'high': 175} dic1 = {'as': 'qyqy', 'oipi': 45, 'age' : 13} dic1.update(dic) print(dic1) {'as': 'qyqy', 'name': 'jin', 'high': 175, 'age': 18, 'sex': 'male', 'oipi': 45}
查:
一、直接根据k值查询,若是k值没有,会报错
二、for 循环,总体查
三、get(k,None) dic_2 = dic_1.get ( k,v) 若是有k值,返回对应的v值,若是没有对应的k值,默认返回 None ,能够设定v值返回。
dic = {'age': 18, 'name': 'jin', 'sex': 'male'} print(dic.keys(),type(dic.keys())) print(dic.values(),type(dic.values())) print(dic.items(),type(dic.items())) dict_keys(['sex', 'name', 'age']) <class 'dict_keys'> dict_values(['male', 'jin', 18]) <class 'dict_values'> dict_items([('sex', 'male'), ('name', 'jin'), ('age', 18)]) <class 'dict_items'>