Python数据结构dict常用操作代码实例
dict是python中的常用数据结构,应该尽量掌握其使用方法
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值key=>value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中
代码如下
""" 初始化一个dict的四种方式: 1.dict()->创建一个空的dict 2.dict(mapping)->newdictionaryinitializedfromamappingobject's (key,value)pairs 3.dict(iterable)->newdictionaryinitializedasifvia: d={} fork,viniterable: d[k]=v 4.dict(**kwargs)->newdictionaryinitializedwiththename=valuepairs inthekeywordargumentlist.Forexample:dict(one=1,two=2) """ #第一种方式 d=dict() #第二种方式 #d={"person":{"name":"admin","age":12}, #"animal":{"name":"gaodan","age":3}, #} #第三种方式 d=dict({"name":"admin"}) print(d) #第四种方式 d=dict(name='admin',age=12) print(type(d)) print("原字典:%s"%d)#{'name':'admin','age':12} #clear,清空 #d.clear() #print(d) #copy浅拷贝 new_d=d.copy() print("copy出的新字典:%s"%new_d)#{'name':'admin','age':12} new_d['name']='root' print('修改之后的copy字典:%s'%new_d)#修改之后的copy字典:{'name':'root','age':12} print("修改之后的原字典:%s"%d)#{'name':'admin','age':12} #总结:copy浅拷贝简单数据结构时,创建了一个新的对象,修改新dict中的值,不会引起原有dict中值的变化 print('*'*50) d={"person":{"name":"admin","age":12}, "animal":{"name":"gaodan","age":3} } print(d)#{'person':{'name':'admin','age':12},'animal':{'name':'gaodan','age':3}} new_d=d.copy() new_d['person']['name']='root' print(new_d)#{'person':{'name':'root','age':12},'animal':{'name':'gaodan','age':3}} print(d)#{'person':{'name':'root','age':12},'animal':{'name':'gaodan','age':3}} #总结:浅拷贝:copy浅拷贝复杂数据结构时,只是指向了这个复杂数据结构的引用,并没有创建一个新的对象.所以修改new_d这个新dict的值时,原dict中的值也发生变化.如果是简单数据结构,不存在这类情况,上面也有示例 """ python中的深拷贝需要importcopy copy.deepcopy() """ print('--------------------deepcopy------------------') importcopy d={"person":{"name":"admin","age":12}, "animal":{"name":"gaodan","age":3} } print(d) dd=copy.deepcopy(d) print(dd)#{'person':{'name':'admin','age':12},'animal':{'name':'gaodan','age':3}} dd['person']['name']='哑巴' print(dd)#{'person':{'name':'哑巴','age':12},'animal':{'name':'gaodan','age':3}} print(d)#{'person':{'name':'admin','age':12},'animal':{'name':'gaodan','age':3}} #fromkeys,创建一个新的dict,key是序列中的值 d=dict.fromkeys(['jet','lily'],{"name":"mam"}) print(d)#{'jet':{'name':'mam'},'lily':{'name':'mam'}} #get.取值,没有就是None value=d.get("jet") print(value)#{'name':'mam'} d={"name":'admin','age':12} #items方法 kv=d.items() fork,vinkv: print(k,v) keys=d.keys() print(keys)#dict_keys(['name','age']) #pop(key)移除指定的key对应的kv #value=d.pop('name')#删除name键值对 #print(value)#admin #print(d)#{'age':12} #popitem移除后面的一组item popitem=d.popitem() print(popitem)#('age',12)移除了这一对映射关系 print(d)#{'name':'admin'}d还剩下这玩艺 d={"name":'admin','age':12} #setdefault(k,v),如果原dict有中k,就返回原dict中k-->v,否则就将k,v添加到dict中 default_value=d.setdefault('female','ali') print(default_value) print(d)#{'name':'admin','age':12,'female':'ali'} default_value=d.setdefault('female','jd') print(default_value)#ali print(d)#{'name':'admin','age':12,'female':'ali'} #update.往dict中添加元素 #使用update的第一种方式,注意key没有加引号 #d.update(book='python',teacher='dog') print(d)#{'name':'admin','age':12,'female':'ali','book':'python','teacher':'dog'} #使用update的第二种方式 d.update([('teacher','dog'),{'book','java'}])#好吊的样子 print(d)#{'name':'admin','age':12,'female':'ali','teacher':'dog','book':'java'} #values vs=d.values() print(vs)#dict_values(['admin',12,'ali','dog','java'])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。