数据类型划分
不可变数据类型: 元组、bool、int、str (也称作 可哈希)
可变数据类型: list、dict、set(集合,集合可变,内元素不可变) (也称作 不可哈希)
字典dict
字典是python中惟一的的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无需存储的,且key必须是可哈希的。
dict 优点: 字典当中的元素是通过键来存取的,而不是通过偏移存取。二分查找去查询,存储大量的关系型数据。
dict的增、删、改、查
增:
1、直接键值对增加,没有相同k值时直接添加,k值已经存在,则v值覆盖。
2、通过 setdefault(self,k,v=None)添加,k值没有时,直接添加,k值已经存在,则不做任何改变,v值默认为 None
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}
删:
1、pop(self,k:_KT) 按键去删除,有返回值,如果k值本来存在,返回k值对应的v值,如果k值不存在,默认返回None,可以设置v值为任何形式。
2、popitem(self) 随机删除一个键值对,有返回值,元组形式出现,删除的键值对
3、clear 清空字典
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') {}
改:
1、直接覆盖
2、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}
查:
1、直接根据k值查询,如果k值没有,会报错
2、for 循环,整体查
3、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'>