可以通过直接赋值的方式对字典进行修改,当指定的键不存在时则会在末尾增加一对儿键值
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}dic['age']=20dic['lover']='小昭'print(dic)输出:{'name':'刘先生','age':20,'job':'工程师','marr':'已婚','lover':'小昭'}还可以使用setdefaultv(key,value)方法来增加键值对儿如果key存在则不错任何改动,如果key不存在,则会在末尾添加新的键值,并且如果不给定value的话默认为None一句话概括就是“有就不管他,没有就增加”,这在循环中可以利用这一点
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}dic.setdefault('name','超人')dic.setdefault('lover','小姐姐')print(dic)输出:{'name':'刘先生','age':'39','job':'工程师','marr':'已婚','lover':'小姐姐'}删:pop()cleardelpop删除指定的key对应的value,并且返回删除的value,如果key不存在则会报错。
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}res=dic.pop('name')print(dic,'返回值:',res)输出:{'age':'39','job':'工程师','marr':'已婚'}返回值:刘先生在使用pop()时还可以增加一个参数来指定返回值,如果给定的key不存在则会返回给定的返回值.这种方式非常好用,可以防止key不存在时报错,如果存在则删除,不存在则返回指定的字符串。
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}res=dic.pop('小三儿','查无此人')print('返回值:',res)输出:返回值:查无此人clear用于清空字典。
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}dic.clear()print(dic)输出:{}del用于删除指定的键值,如果只给出字典名字时则会删除整个字典对象
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}deldic['name']#deldicprint(dic)输出:{'age':'39','job':'工程师','marr':'已婚'}改:见“增”查:可以直接指定键来访问字典,有则返回对应的值,没有则报错:
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}a=dic['name']print(a)输出:刘先生可以通过字典的三个方法keys(),values(),items()分别查询所有的键、值、键值对儿。
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}a=dic.keys()b=dic.values()c=dic.items()print('keys():',a)print('values():',b)print('items():',c)输出:keys():dict_keys(['name','age','job','marr'])values():dict_values(['刘先生','39','工程师','已婚'])items():dict_items([('name','刘先生'),('age','39'),('job','工程师'),('marr','已婚')])还可以用for循环遍历这三个方法来分别获得键值。
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}forkindic.keys():print(k)输出:nameagejobmarrdic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}forvindic.values():print(v)输出:刘先生39工程师已婚dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}fork,vindic.items():print(k,v)输出:name刘先生age39job工程师marr已婚字典的其他方法len(dict)计算字典元素个数。str(dict)把字典专户为字符串,如:
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}a=str(dic)importreres=re.search(r'name',a)print(res)输出:<_sre.SRE_Matchobject;span=(2,6),match='name'>因为把dic转化为字符串并赋值给a,所以可以对a进行正则匹配而如果直接对dic进行正则匹配则报错,因为dic不是字符串类型。copy()返回一个字典的浅复制
dict.fromkeys(seq,'value')以序列seq中的元素作为字典的键,value为初始值创建字典,如果不给参数value的话则每个键对应的值为Non,注意:这是一个“类方法”,所以使用时前面要加dict.
seq=['a',1,'b']a=dict.fromkeys(seq,'value')print(a)输出:{'a':'value',1:'value','b':'value'}get(key,default=None)返回指定键的值,如果键不存在则返回default值。
popitem()删除并返回字典的一个键值对,如果字典为空则会报错。
dic={'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}res1=dic.popitem()res2=dic.popitem()res3=dic.popitem()print(res1,res2,res3,dic)输出:('marr','已婚')('job','工程师')('age','39'){'name':'刘先生'}update([other])用键值对儿更新字典,如果键已经存在则会替换对应的值,参数为另外一个字典或者可迭代的键值对儿,比如: