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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。