标签:idt 复制 关系 作者 most image ima python png
不知道昨天那个科普你有没有看懂,没看懂也没关系,毕竟现在只是在学基本语法。
今天我们要来讲一下copy,fromkeys,get这三个方法。
我们先来看一下copy这个方法,copy这个方法有点特殊,我们在前面讲过的复制的方法,只要修改复制后的值,被复制的值也会发生相应的改变,但是,在copy这个方法这里,如果是实行替换的话,那么被复制的值是不会被改变的,但如果实行的是删除,被复制的值会被改变。我们来看一下对比代码:
x = {‘name‘:‘Tom‘,‘phone‘:[‘123‘,‘456‘]}
y = x.deepcopy()
y[‘name‘] = ‘pony‘
y[‘phone‘].remove(‘123‘)
y
#按回车,得到的结果是:{‘name‘: ‘pony‘, ‘phone‘: [‘456‘]}
x
#按回车,得到的结果是:{‘name‘: ‘Tom‘, ‘phone‘: [‘456‘]}
我们看到上面的代码,很明显,y是x的副本,当我们替换y中的值的时候,也就是把Tom改成pony,只有y中的Tom会发生改变,而x中的Tom并不会被改变。接着我们看一下remove操作,remove之后,x,y两个字典的内容都被改变。那么,我们有没有什么别的方法来防止在修改副本的时候,被复制值被修改?这个时候我们就需要引入deepcopy这个方法,deepcopy的使用方法和copy一样,不过要在开头加入from copy import deepcopy,deepcopy不修改被复制值。
接下来我们来看一下fromkeys。这个方法主要是用来创建一个字典用的,没什么特变的地方,我们来看一下代码就好了:
{}.fromkeys([‘name‘,‘age‘])
#按回车,得到的结果是:{‘name‘: None, ‘age‘: None}
是不是一看到代码就基本知道怎么用了?fromkeys括号里面跟着的就是字典的键,用fromkeys创建的字典是没有值的。
最后,我们来看一下get这个方法,这个方法的主要作用在于当你查询字典中没有的某个项时,字典不会报错,会输出一个None跟你说没有这个项,我们来看一下示例代码:
x = {}
print(x[‘name‘])
#按回车,得到的结果是:Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
#KeyError: ‘name‘
print(x.get(‘name‘,‘no‘))
#按回车,得到的结果是no
看上面第一段代码,那个就是报错的提示,然后你看一下第二段代码中,得到的结果是no。这是我们在get方法里面有定义说如果找不到那么这个项的时候,就输出no。如果你没有定义的话,系统默认是输出None。
好的,今天的内容就讲到这里啦~
(文章图片若有侵权,请联系作者删除)
标签:idt 复制 关系 作者 most image ima python png
原文地址:https://www.cnblogs.com/Galaxyfengfeng/p/9075222.html