(一)删除
关于字典里面键值对的删除,可以使用del来删除字典中的 key-value,也可以用来删除变量。
aa={"a":1,"b":2,"c":3,"f":4,"d":5,"e":6} delaa['a'] delaa['b'] print(aa)
得到的结论是:
{'c': 3, 'f': 4, 'd': 5, 'e': 6}
Popitem 可以随机删除字典中的键值对,一般都会删除最后一个键值对,删除之后,他会将删除的 key-value 作为返回值返回,返回的是由两个元素的元组,第一个元素是删除的 key,第二个是删除的 value。
aa={"a":1,"b":2,"c":3,"f":4,"d":5,"e":6} print('原来的数据:',aa) result=aa.popitem() print('删除后的数据:',aa) print('删除的数据:',result)
原来的数据: {'a': 1, 'b': 2, 'c': 3, 'f': 4, 'd': 5, 'e': 6}
删除后的数据: {'a': 1, 'b': 2, 'c': 3, 'f': 4, 'd': 5}
删除的数据: ('e', 6)
当使用 popitme()删除一个空字典时,会抛出异常
KeyError: 'popitem(): dictionary is empty'
pop 是根据 key 删除字典中的 key-value,会将被删除的 value 返回,如果删除不存在的 key,会抛出异常;指定了默认值,再删除不存在的 key 时,不会报错,而是直接返回默认值。
语法:pop(key[,default])
aa={"a":1,"b":2,"c":3,"f":4,"d":5,"e":6} # 根据key删除字典中的key-valueresult=aa.pop('f') print('result=',result) print(aa)
得到的结论是:
result= 4
{'a': 1, 'b': 2, 'c': 3, 'd': 5, 'e': 6}
如果删除不存在的 key,会抛出异常 KeyError: 'g'
aa={"a":1,"b":2,"c":3,"f":4,"d":5,"e":6} # 根据key删除字典中的key-valueresult=aa.pop('g')
指定了默认值,再删除不存在的 key 时,不会报错,而是直接返回默认值
aa={"a":1,"b":2,"c":3,"f":4,"d":5,"e":6} # 根据key删除字典中的key-valueresult=aa.pop('g','这是默认值') # 指定默认值print('result=',result) print(aa)
得到的结论是:
result= 这是默认值
{'a': 1, 'b': 2, 'c': 3, 'f': 4, 'd': 5, 'e': 6}
clear,用来清空字典。
(二)复制
copy(),用于对字典进行浅复制
aa={"a":1,"b":2,"c":3,"f":4,"d":5,"e":6} bb=aa.copy() print('aa=',aa) print('aa的id:',id(aa)) print('bb=',bb) print('bb的id:',id(bb))
得到的结论是:
aa= {'a': 1, 'b': 2, 'c': 3, 'f': 4, 'd': 5, 'e': 6}
aa的id: 4344348864
bb= {'a': 1, 'b': 2, 'c': 3, 'f': 4, 'd': 5, 'e': 6}
bb的id: 4344349120
可以看到 id 是不一样的,复制以后的对象和原对象是独立的,修改一个不会影响另一个。而这个浅复制是指只复制对象内部值,如果值也是一个可变对象,这个可变对象不会被复制。
aa={"a":{'name':'孙悟空','age':18},"b":2,"c":3,"f":4,"d":5,"e":6} bb=aa.copy() bb["a"]['name']='猪八戒'print('aa=',aa) print('aa的id:',id(aa)) print('bb=',bb) print('bb的id:',id(bb))
得到的结论是:
aa= {'a': {'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3, 'f': 4, 'd': 5, 'e': 6}
aa的id: 4478599680
bb= {'a': {'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3, 'f': 4, 'd': 5, 'e': 6}
bb的id: 4478599488