13.Python基础篇-Dict字典
字典dict
数据类型划分:可变,不可变数据类型,两种。
不可变数据类型(可哈希):元组,bool,int,str
可变数据类型(不可哈希):list,dict,set
字典的key:必须是不可变数据类型,可哈希
value:任意数据类型
字典的优点:二分查找法
存储大量的关系型数据
特点:字典是无序的,3.6以上是有序的。
增
方法一:
dic1 = { 'age':18,'name':'jin','sex':'male' } dic1['high'] = 185#没有键值对添加 dic1['age'] = 16#如果已有键,则将值覆盖
方法二setdefault()
添加的键值对已存在,则不会做任何改变;添加的键值对不存在,则会添加到字典末尾。
dic1 = {'age':18,'name':'jin','sex':'male'} dic1.setdefault('weight',150) # weight不存在,会添加到字典中 dic1.setdefault('age',16) # age已存在,则不会添加,也不会修改 print(dic1) 结果: {'age': 18, 'name': 'jin', 'sex': 'male', 'weight': 150}
删
方法一:pop()
按键删除;有返回值(接收两个参数,一个默认为空),返回删除的元素,如果没有的话,可以自定义一个提示(第二个参数)。
dic1 = {'age':18,'name':'jin','sex':'male'} print(dic1.pop('大哥','找不到此键')) 结果:找不到此键
方法二:popitem()
py3.5随机删除,py3.6默认删除最后一个。有返回值,返回删除的键和值,返回值为元组类型。
dic1 = {'age':18,'name':'jin','sex':'male'} print(dic1.popitem())#py3.6默认删除最后一个。py3.5:随机删除 结果:('sex', 'male')
方法三:del
可以删除字典中的某个键值对,也可以删除整个字典。
dic1 = {'age':18,'name':'jin','sex':'male'} del dic1['age']#删除dic1里面age这个键值对,如果没有这个键值对会报错。 del dic1#删除dic1这个变量
方法四:clear(),清空字典
dic1 = {'age':18,'name':'jin','sex':'male'} dic1.clear() print(dic1) 结果:{}
改
方法一
dic1 = {'age':18,'name':'jin','sex':'male'} dic1['age'] = 16 print(dic1) 结果:{'age': 16, 'name': 'jin', 'sex': 'male'}
方法二:update()
把一个字典当中的键值对,添加到另一个字典当中。如果某些键已存在,则直接覆盖。
查
方法一:[key]
查找的键存在,则返回值。不存在则报错。
dic1 = {'age':18,'name':'jin','sex':'male'} print(dic1['age'])#寻找一个叫age的键,如果没有会报错
方法二:get()
按键查找,没有返回None,可以自定义提示。和删除的pop方法类似。
dic1 = {'age':18,'name':'jin','sex':'male'} print(dic1.get('age1','找不到此键'))#寻找一个叫age的键,如果没有会返回一个提示,默认为空。和删除的pop方法类似 结果:找不到此键
方法三:keys,values,items
keys:访问字典中所有的key;values:访问字典中所有的value;items:访问字典中所有的键值对。
dic1 = {'age':18,'name':'jin','sex':'male'} print(dic1.keys())#输出dic1所有的键 print(dic1.values())#输出dic1所有的值 print(dic1.items())#输出dic1所有的键值对 结果: dict_keys(['age', 'name', 'sex']) dict_values([18, 'jin', 'male']) dict_items([('age', 18), ('name', 'jin'), ('sex', 'male')])
items方法结合for循环使用,对字典进行遍历。
for k,v in dic1.items(): print(k,v) 结果:age 18 name jin sex male