目录
1、dict和list中copy方法画图加代码解释
2、dict中扩展字典长度(多种方法)
3、dict中获取所有的key,获取所有的value,获取所有的item
4、dict中通过一个不存在的key去获取值(要求不报错)
5、定义空集合
6、set中,求差集,求合集,求交集(要求在原集合上操作)添加一个元素删除一个元素(使用多种方法)
1、dict和list中copy方法画图加代码解释
直接赋值和copy的区别
-
直接赋值:其实就是对象的引用(别名)。
dict_abc = {1: 2.2, b'22': "222"} dict_ccc = dict_abc print(dict_ccc)
-
dict_abc = {1: 2.2, b'22': "222"} dict_ccc = dict_abc print(dict_ccc) print(id(dict_abc)) print(id(dict_ccc)) D:\python\python.exe "D:/python 作业合集/补作业.py" {1: 2.2, b'22': '222'} 2369396703296 2369396703296 Process finished with exit code 0
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
-
dict_abc = {1: 2.2, b'22': "222"} dict_ccc = dict.copy(dict_abc) print(dict_ccc) print(id(dict_abc[1])) print(id(dict_ccc[1])) D:\python\python.exe "D:/python 作业合集/补作业.py" {1: 2.2, b'22': '222'} 2417750443632 2417750443632 Process finished with exit code 0
然而也会出现以下情况
dict_abc = {1: 2.2, b'22': "222"} dict_ccc = dict.copy(dict_abc) print(dict_ccc) print(id(dict_abc)) print(id(dict_ccc)) D:\python\python.exe "D:/python 作业合集/补作业.py" {1: 2.2, b'22': '222'} 2215213629504 2215213629696 Process finished with exit code 0
id码并不相同,a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)
-
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
dict_data = {1: [1, 2, 3]} dict_data2 = copy.deepcopy(dict_data) print(dict_data2) print(id(dict_data[1])) print(id(dict_data2[1])) print(id(dict_data)) print(id(dict_data2)) dict_data[1][1] = 8 print(dict_data) print(dict_data2) {1: [1, 2, 3]} 2472985995776 2472985993344 2472980210432 2472984590528 {1: [1, 8, 3]} {1: [1, 2, 3]}