常用方法
浅拷贝copy
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
new_dict = a.copy()
new_dict["ilpy1"]["company"] = "wtf"
print(new_dict)
print(a)
print(id(a))
print(id(new_dict))
print(id(new_dict["ilpy1"]["company"]))
print(id(a["ilpy1"]["company"]))
然后我们发现,执行这一步操作时new_dict["ilpy1"]["company"] = "wtf"
,对a也执行了修改,比较id可知new_dict["ilpy1"]["company"]))
和a["ilpy1"]["company"]
指向了同一位置,而a
与new_dict
指向不同位置,这就是浅拷贝的副作用
深拷贝
这并不是dict
自带的方法而是来自python的一个包copy
import copy
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
new_dict = copy.deepcopy(a)
print(id(a))
print(id(new_dict))
a['ilpy1']['company'] = "666"
print(a)
print(new_dict)
list转换dict
import copy
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
myList = ['aaa', 'bbb']
new_dict = dict.fromkeys(myList, "2")
print(new_dict)
items
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
for key,value in a.items():
print(key,value)
clear
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
# clear 清楚dict元素
# a.clear()
# print(a)
update
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
a.update(a=1,b=2)
print(a)
传入可迭代对象也可
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
a.update([('1','2')])
print(a)
a.update((('1','2'),))
print(a)
setdefault
Python 字典 setdefault() 函数和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。所以当我们需要快速判断键值对是否存在并且加上去的时候就可以使用此方法