字典 (dict) 的增删改查及其他方法
字典 (dict) 的增删改查及其他方法
一、字典
1、字典简介:
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
PS:数据类型划分:可变数据类型 和 不可变数据类型
不可变数据类型:元组、bool、int、str (可哈希)
可便数据类型:list,dict,set (不可哈希)
dict key:必须是不可变数据类型,可哈希
value:任意数据类型
dict优点:二分查找去查询,存储大量的关系型数据
特点:无序的
2、字典用法:
1)增:
dic = {'age':18,'name':'liu','sex':'male'} dic['high'] = 185 #没有键值对,添加 结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'high': 185} dic['age'] = 16 #如果有键,则值覆盖 结果:{'age': 16, 'name': 'liu', 'sex': 'male'} dic.setdefault('weight') 结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight': None} dic.setdefault('weight',110) #有键值对,不做任改变,没有才添加。 结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight':110} dic.setdefault('name','Liu') #有键值对,不做任改变,没有才添加。 结果{'age': 18, 'name': 'liu', 'sex': 'male'}
2)删:
dic = {'age':18,'name':'liu','sex':'male'} dic.pop('age') #有返回值,按键去删删除 结果:{'name': 'liu', 'sex': 'male'} dic.pop('二哥',None) #可设置返回值,没设置返回值会报错。 结果:{'age': 18, 'name': 'liu', 'sex': 'male'} dic.popitem() #随机删除 有返回值 元组里面是删除键值,Python3.6是默认删除最后一个 结果:{'age': 18, 'name': 'liu'} del dic['name'] #删除指定键值对,如果没有会报错。 结果:{'age': 18, 'sex': 'male'} del dic #直接删除字典,会报错。 结果:报错 dic.clear() #清空字典 结果:{}
3)改:
dic = {'age':18,'name':'liu','sex':'male'} dic['age'] = 16 #覆盖就是更改 结果:{'age': 16, 'name': 'liu', 'sex': 'male'} dic = {'age':18,'name':'liu','sex':'male'} dic1 = {'name':'刘松','weight':75} dic.update(dic1) #直接替代更新,用字典更新替代老的字典.update前面的是被更新的字典 print(dic) 结果:{'age': 18, 'name': '刘松', 'sex': 'male', 'weight': 75} #更新后的字典 print(dic1) 结果:{'name': '刘松', 'weight': 75} #原字典
4)查:
dic = {'age':18,'name':'liu','sex':'male'} print(dic.keys()) #字典的键值对 以列表形式输出 但是类型是键值对型 结果:dict_keys(['age', 'name', 'sex']) print(dic.values()) #字典的值 以列表形式输出 但是类型是键值对型 结果:dict_values([18, 'liu', 'male']) print(dic.items()) #字典的键值对 以元祖形式输出 但是类型是键值对型 结果:dict_items([('age', 18), ('name', 'liu'), ('sex', 'male')]) for i in dic: #默认打印出键值,后面跟.value可以打印出数值,后面跟.items可以打印键值对 print(i) 结果:age name sex print(dic.get('age')) #根据键找对应的数值,不报错 可以自定义值 默认返回 none 结果:18
5)嵌套
例: dic = { 'name':['alex','wusir','taibai'], 'py9':{ 'time':'1213', 'learn_money':19800, 'addr':'CBD', }, 'age':21 }
分类: python入门基础