dict是属于mapping类型的,使用的方法就是直接定义一个花括号 { } 。
在下面的代码中,列举了dict的一些常用的方法。
- 这里涉及到浅拷贝和深拷贝的知识,因为python的内部是用c写的,所以原理也是相似。当使用浅拷贝时,新的对象的更改会带动,被拷贝的对象。原因:浅拷贝是将新的一根指针指向原有的内存块,并没有开辟新的内存块,因此会有变化。解决方法就是使用 import copy的方法 copy.deepcopy(xxx对象)
"""
@Time : 2021/5/11 22:03
@Author : sailorlee(lizeyi)
@FileName: dict_abc.py
@Software: PyCharm
"""
from collections.abc import Mapping,MutableMapping
# dict属于mapping类型
a = {}
# a 并没有继承mutablemapping 只是实现了一些魔法函数
print(isinstance(a,MutableMapping))
# dict常用的方法,底层使用c语言写的
a = {"sailorlee":{"company":"runtrend"},
"sailorlee2":{"company":"runtessdd"}
}
# a.clear()
# pass
# 浅拷贝
new_dict = a.copy()
new_dict["sailorlee"]["company"] = "imooc"
pass
# 深拷贝
import copy
new_dict = copy.deepcopy(a)
new_dict["sailorlee"]["company"] = "imooc"
formkeys方法
# formkeys
new_list = ["bobby1","bobby2","sailor"]
new_dict = dict.fromkeys(new_list,{"company":"imooc"})
pass
get方法如果有值的画就直接拿出来,没有就返回空的dict
# get
value = new_dict.get("bobby",{})
item方法 ,适用于循环迭代
# item
for key,value in new_dict.items():
print(key,value)
设置dict内容,并且把新的imooc的内容返回给default_value
# setdefault
default_value = new_dict.setdefault("sailor","imooc")
update赋值的方式很多种 “bobby”:“imooc” ,update(((“bobby”,“imooc”),(“bobby3”,“imooc2”) ))
# update方法 "bobby":"imooc" update((("bobby","imooc"),("bobby3","imooc2") ))
a.update(bobby = "imooc",bobby3 = "imooc2")
pass
每天学习python1小时