更新时间:2022-09-06 18:15:13
开发者学堂课程【Python Web 开发基础:字典的使用2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/600/detail/8717
内容简介:
(一)删除
(二)复制
关于字典里面键值对的删除,可以使用del来删除字典中的 key-value,也可以用来删除变量。
首先 print(d)看到里面有{'a':1,'b':2,'c'=3,'d':4,'e':5,'f'=6},调一个 del d['a'],这样执行 a 就被删掉了。有两种方式,一个是 pop,一个是 popitem。
Popitem 可以随机删除字典中的键值对,一般都会删除最后一个键值对,删除之后,他会将删除的 key-value 作为返回值返回,返回的是由两个元素的元组,第一个元素是删除的 key,第二个是删除的 value。当使用 popitme()删除一个空字典时,会抛出异常 KeyError对{'a':1,'b':2,'c'=3,'d':4,'e':5,'f'=6}进行 d.popitem(),执行之后最后一个 f 就没了。我们直接用 result=d.popitem()输出 result 看到它是有返回值的。
pop 是根据 key 删除字典中的 key-value,会将被删除的 value 返回,如果删除不存在的 key,会抛出异常;指定了默认值,再删除不存在的 key 时,不会报错,而是直接返回默认值。输入 result=d.pop('d')输入 print('result'=,result),然后 print(d),执行之后 d 就没有了。如果写一个没有的键,result=d.pop('z'),它就会报错。但如果输入 result=d.pop('d','这是默认值'),则不会报错。需要注意的是 del d['z'],这时也会报错。用 result=d.popitem()调三次,里面就空了,再调一个就会报错,这个字典是空的。
clear,用来清空字典。
copy(),用于对字典进行浅复制。复制一个d={'a':1,'b':2,'c'=3},如果我想创建一个 d 的独立的副本,直接输入 d2=d。打印 print('d=',d),print('d2=',d2),执行之后,两个都是一样的,但是这个不算复制,因为这两个指向的对象只有一个量,改变一个,另一个也会改变。
此时调一个 d.copy(),这个时候打印也是一样的,如果 print('d=',d,id(d)),print('d2=',d2,id(d2))执行的话,可以看到 id 是不一样的,复制以后的对象和原对象是独立的,修改一个不会影响另一个。而这个浅复制是指只复制对象内部值,如果值也是一个可变对象,这个可变对象不会被复制。d={'a':{'name':'孙悟空','age':18},'b':2,'c'=3},打印出来。
如果用 d2=d.copy(),d2['a']['name']='猪八戒',执行之后就会发现两个都变了。深层复制性能会很差,所以我们一般都使用浅复制。