数据类型-字典字典也是python中最常用的数据类型之一。与list或str不同,字典的定义是一个键值对,键和值之间用:分隔,多个键值对之间用分隔,键通常是不可变类型。列表不能作为key,创建方式是一对{}。1.特征字典中的key是唯一的:如果重复,后面的key会覆盖前面的key。python3.6之前的字段是无序的,3.6之后,有序字典不支持索引切片。字典是一个变量类型的例子#创建一个字典,其值为dict1={'name':'Tom','age':20,'gender':'male'}dict2=dict(name='tome',age=20,gender='male')#空字典dict3={}dict4=dict()一般把冒号前的键称为键(key),简称k;冒号后面的值是值(value),简称v。2.字典常用操作2.1添加字典就是在字典中添加一个键值对,语法字典序列[key]=value如果key存在,则修改key对应的value;如果键不存在,添加这个键值对示例dict1={'name':'Tom','age':20,'gender':'Male'}dict1['name']='Rose'print(dict1)#结果:{'name':'Rose','age':20,'gender':'male'}dict1['id']=110print(dict1)#{'name':'Rose','age':20,'gender':'male','id':110}3.2删除del:删除字典或删除字典中指定的键值对例子dict1={'name':'Tom','age':20,'gender':'Male'}deldict1['gender']print(dict1)#Result:{'name':'Tom','age':20}clear():清空字典dict1={'name':'Tom','age':20,'gender':'Male'}dict1.clear()print(dict1)#结果:{}3.3改变语法字典序列[key]=value如果key存在,则修改key对应的value;如果键不存在,添加这个键值对3.4搜索3.4.1键搜索dict1={'name':'Tom','age':20,'gender':'male'}print(dict1['name'])#Result:Tomprint(dict1['id'])#结果:报错。如果key在字典中不存在,则程序抛出异常KeyError:key3.4.2get()syntaxdictionarysequence。get(key,defaultvalue)如果当前搜索的key不存在则返回第二个参数(默认值),如果省略第二个参数则返回None,这样做的好处是程序不会抛出异常dict1={'name':'Tom','age':20,'gender':'Male'}print(dict1.get('name'))#结果:Tomprint(dict1.get('id',110))#结果:110print(dict1.get('id'))#结构:None3.4.3keys()语法字典sequence.keys()示例dict1={'name':'Tom','age':20,'gender':'Male'}print(dict1.keys())#结果:dict_keys(['name','age','gender'])用于多个组合,返回一个列表,里面存储了当前所有的kkey3字典。4.4values()语法字典sequence.values()例子dict1={'name':'Tom','age':20,'gender':'male'}print(dict1.values())#result:dict_values(['Tom',20,'male'])经常和循环结合使用,同样返回一个列表,里面存储了当前dict的所有值。3.4.5items()语法字典sequence.items()示例dict1={'name':'Tom','age':20,'gender':'Male'}print(dict1.items())#结果:dict_items([('name','Tom'),('age',20),('gender','male')])经常和循环结合使用,返回的也是一个列表,里面存储元组形式的字典的键和值4。常见的集中式字典循环遍历4.1遍历字典中的keydict1={'name':'Tom','age':20,'gender':'Male'}forkeyindict1.keys():print(key)4.2valuedict1={'name':'Tom','age':20,'gender':'Male'}forvalueindict1.values():print(value)4.3遍历字典dict1={'name':'Tom','age':20,'gender':'male'}forkey,valueindict1.items():print(f'{key}={value}')5.defaultdictdefaultdict是对collections模块字典类型的补充。它可以为字典的值设置一个类型。使用原生字典dict时,d[key]取值时,如果key不存在,程序抛出异常,KeyError异常使用defaultdict,只要传入一个默认的工厂方法,当一个key获取到不存在的,就会调用这个工厂方法,并将结果作为key的默认值Examplefromcollectionsimportdefaultdictd={}#print(d['a'])#Result:KeyError:'a'dd=defaultdict(lambda:'aaa')print(dd['key'])#结果:aaas=[('yellow',1),('blue',2),('yellow',3),('blue',4),('red',1)]d=defaultdict(list)fork,vins:d[k].append(v)print(d)#结果:defaultdict(
