00:00
我们以前学过这个列表的删除方法,比如说这是一个6以内的数值,对吧,012345。我想删除它用什么呀?用Pop pop什么意思?弹战弹战弹的谁弹的5,为什么弹5呢?因为谈的是占顶,注意这是一摞碗。谈战谈的是谁呢?弹的是占顶,弹的占顶,那我不想弹战顶,我想从中间抽一个可以吗?last.poppop谁呢?POP2,这个时候我就把序号是2的这个2给弹出去了,观察一下,2弹出去了,那我还想弹2会会发生什么?他就他就再把这个还是第二位的这个三给弹出去了,所以这就是什么呢?这就是弹战弹的具体的位置,那我弹一个不不不存在的位置,比如说我我谈100号位,它不存在这个index index auto range, 现在不谈列表了,我想谈个字典,把这个字典拿过来,D是个字典,猫怎么叫喵,狗怎么叫呢?汪,那d.pop直接弹行不行不行,为什么呢?他说了pop期待着一个。
01:17
参数,但得到0个就刚才不是谈的挺好吗?刚才那事儿列表,这是字典,不同的类型就有不同的泡,方法就不一样嘛,那现在有猫有狗,那我弹谁弹这个猫啊,喵一声,然后呢,我们还看这个狗呢,就还在猫呢被弹占了,那这个时候我在弹狗pop dog, 这时候呢,就会弹出这个dog所对应的value是望D就变成什么,D就变成空字点了,我这时候在想弹谁弹right,弹这个老鼠,它就会出现KL。因为没有老鼠这个key,就跟那刚才那个找不着100这个列表项一样,它是弹不着的,但是我又不想出现这个KL行不行,我把后边加一个什么呀?Note found没找着他,他不谈老鼠,他也不谈KL,弹一个not found, 这是为什么会这样呢?帮助文档是怎么说的?字典的pop方法,它说的是d.pop字典的pop方法两个参数,一个是key,一个是default,返回V就是这个key所对的value。
02:26
删除这个key在这个字典中所对应的,如果这个key不存在,那么D就被返回,就是那个default not found, 对吧?如果给了的话就返回,如果没给呢,就KLNQ退出来。那Di的pop方法和list的pop方法有什么区别吗?List弹的是索引的值,是一个数值,是它的序号啊,字典呢,弹的是K,弹的弹,弹的是它的键。如果没有参数,它弹占顶,如果没有参数,字典呢,报错返回值是被被删的这个被弹的这个元素,那么这个泡泡返回值呢,是被删的这个key所对应的value,所以数字不存在就报错,如果这个key不存在呢,也报错,什么时候不报错呢?设置了默认值它就不报错,这时间复杂度如何呢?字典的时间复杂度是O1但列表的时间复杂度呢是O,所以说字典删除效率更高,不过它的需要的空间就更大。
03:28
字典是不支餐贪占的,就是递点泡泡是不行的,那我就想这么泡不出来的东西就怎么办呢?那我就不用pop了,除了pop之外,还有一个方法叫什么呢?叫这是什么样的呢?它Remove and return a k y6p ASA to tale, 返回这个key所对应的呃,键值二元组。那么这个返回的方式呢,是force in lasts out, 是谈战的方式,站顶是一样的,那好,我们得到这样一个传统字典,一个猫,一个狗,然后呢,我们这个字典呢,如果先直接谈战,谈的是谁,谈的是占鼎,谈的是狗,对吧?
04:16
然后呢,我们可以看到还剩一个猫top抬再弹战弹的是猫,然后字典变空了,在变空了,然后再弹,再想弹呢,就又出现KL了,因为dictionary is empty字典空了,你没法再弹了,对吧。那我们可以注意到字典,其实它里边的KY6撇是有顺序的,这块有两个字典,一个是D,一个是D2,那D呢,它是先猫后狗,第二呢是先狗后猫,所以如果D它去pop item的时候,他先谈的是谁,他先谈的是狗,为什么呢?占顶是狗。对吧,如果第二pop泡item的时候,他弹的是谁呢?他前他弹的是猫,为什么呢?他他的占顶是猫,它不一样对吧?那字典可以拷贝吗?派Tutor去执行一下。
05:09
目前这个代码呢,是一个字典,然后呢,我把这个字典赋给另外一个字典,直接赋值的方法,两个字典指向同一位置,这个不算拷贝,什么是拷贝,要用于拷贝函数,这就是一个拷贝,对不对?那拷贝了之后呢,他就完成了,这个各是各的空间啊,它复制出来一个副本,这个副本有它自己独立的空间。所以这就是拷贝方法,但是呢,这个拷贝说到底是不是shallow拷贝呢,我不知道,那我在这里边儿加上这个一个列表,我让它这个空间呢更大一点,也就是他的这个key所对应的value,有一个字典里的列表的这么一个东西,你可以看到这是字典里的列表,字典里表我再去指的时候,它就怎么样。它也指向同一个列表,所以就是什么浅层拷贝,浅层你建立了副本空间,但是深层次还是完全共享的,那我想各有各的空间,那怎么办呢?那就是from copy import, 一个deep copy, 这就不是shallow copy能解决的问题了,这就是deep copy要解决的问题了,我把这个东西呢,用deep copy考一遍。
06:26
原始字典呢,还是这个字典,但新字典呢,各有各的空间,不但浅层次有它的一个副本空间,它的深层次也有它相应的副本空间,这就是deep copy deep copy.那么这个还有一个问题,就是现在K是一个值,Value是一个字,是一个列表,我如果把它反过来行不行,我把这个反过来。K是一个列表,Y6是一个值,这行不行来着。我们观察一下不行,他说unhashshable tap unhashtable type list, 那它为什么不行呢?因为这个列表的类型是变量,这个变量呢,它就是不可哈希的。
07:10
布克哈西的,他就没法儿做字典的key对吧,就像以前他不能做这个,呃,集合的集合项是一样的。那这次呢,我们讲的就是这个字典,像的存取颜色字典,猫狗字典可以增删改。想要做点儿字典相关的实际应用,可以吗?我们下次再说o ez教程。
我来说两句