00:00
好嘞,接下来呢,我们继续还是来研究我们这个字典的使用啊,刚才我们说了这个,诶说了这个添加是吧,添加修改这些东西,那接下来呢,我们还有什么呀?哎,还有就是我们还有就是叫做一个删除对吧?删除我们这个字典里边的这个,诶这个尖子,对啊,怎么删呀,诶其实非常简单,我直接在这写了啊删除我们可以什么呀?诶可以使用我们这个哎比delete啊来删除我们这个字典中的什么呀?哎,这个像啊字典中的建谍,对哎字典中的这个什么呀?哎,KY6啊KY6诶其实这删除是万能的是吧?比例子你除了可以删元素,也可以删我们这个字典里边这个进值字,甚至也可以删什么呀,诶删变量,有一个变量你不想用了,你也可以直接用delete给它家删了,直接来演示了啊,那现在我们还是来先print一下这个地啊,我们来看这D里边有什么,这一执行地里边ABCDEF是吧,这么几个键,那现在看着了,我直接调一个delete delete,我们这来一个这个D,然后中。
01:00
空号来一个什么呢?来一个这个A啊,来一个A,把A这个键给它删了,我这一执行A是不是就没了,哎,A就没了啊,然后在这我们再来一个比delete一个这个B啊,这一保存一执行B是不是也没了,哎,Delete叫做一个删除啊,它可以把我们这里边的键给它删除掉啊delete delete完事以后呢,这是一个比较简单的方式了,对吧?然后再来说还有什么呢?还有就是我们要说我们的方法了,方法在这我们来看有两个,一个叫做泡泡,还有一个叫做泡泡item,我们先来看泡泡item,泡泡item呢,它没有什么参数,泡泡item泡泡就是诶就是删除对吧,删除item就是我们的项啊,它可以干嘛呢?哎,他可以随机。哎,随机删除字典中的什么呢?哎,字典中的一个建筑队,哎字典中的一个这个建队,但是这块我们说是随机,其实呢,一般都是什么呀?哎,它都是一般,哎都会删除我们的什么呀?哎最后一个建制队啊,都会删除最后一个减值对什么意思,看着了,那现在啊,我们还是先打印最后一个是这个F对吧?F那在这儿呢,我们调一下,直接调一个D,点一个泡泡item啊泡泡item这一保存一执行干嘛了,是不是F就没了,哎,F就没了,然后我这再执行一下,一走是不是这个E又没了,哎,E又没了啊所以注意泡泡item它总是删除的是最后一个啊最后一个这个建指,对,那泡泡呢,我们来看看它有没有返回值啊,我们直接来一个reut result等于它,然后在这里边我们来输出一下这个result,看看它有没有返回值,这一保存一执行,诶返回一个什么呀,一个这个E逗号五啊E逗号五,所以这里边。
02:44
那我们看到它是不是有返回值啊,诶删除,诶我们说了删除之后,诶删除之后它会什么呢?诶它会将我们这个删除的这个KY6干嘛呢?诶KY6诶作为叫做一个返回值返回啊作为返回返回,那这个时候你要注意了,它作为返回值返回的,返回的是什么?要注意它返回的是一个什么呢?诶是一个元组啊是一个元组是一个什么呢?诶是一个这个呃有两个元素的一个元素啊是一个元组,元组中诶有两个元素啊两个元素哪两个元素,第一个元素是什么呀?是删除的key,是删除的一个key,第二个是什么呢?诶是我们删除的一个Y啊Y的就是说他把你删除完那个原那个那个那个值,那这个这个这个K和value保存到一个元组当中,给你返回了,那注意了,这个时候我们看到它就是什么呢?哎,就是最后一。
03:44
就看见了啊,最后一个看见,因为他们是不是已经被我们删了,哎,被我们删掉了啊,那这就是这么一个意思啊,这个叫做一个泡泡item啊,泡泡item来,那在这里我还是先给它注掉啊,先给它注掉。泡泡item说完了,这东西非常简单啊,自己来用一下就OK了啊,然后再往下,再往下看,我们还有一个叫做泡泡,就叫泡。
04:07
就叫泡泡啊泡泡呢,它的区别你会发现它多了参数了,是不是可以传一个key了,哎传一个key了,那泡泡就是什么呢?哎,就是根据,诶根据我们这个key,诶删除我们这个什么呀?诶删除我们这个字典中的KY,诶KY诶字典中的像啊字典中像那这块我们来看一下,我直接来一个啊直接来一个还是啊我来也看一下返回值result等于一个D点一个泡泡,泡泡我们刚才应该,诶我直接来什么呢?我还是来一个F啊来一个F或者这样吧,我们先看看,先看看啊这一执行CDEF对吧,CDEF,然后呢,我这来一个什么呢?泡泡一个D吧,诶泡泡一个D,把D给删了,我这一执行走一个,诶你看CFD是不是就没了,哎,D就没了,D就已经被我们删掉了啊,所以注意它会根据我们这个K来删除我们这个KY轴啊,我们这个像,但是这里边看它的返回值,返回值是谁啊,返回值是四,四什么四是我们那个值啊,四是那。
05:07
的值,所以这个是我们来说一下叫什么呢。它会将我们这个被删除的这个value啊干嘛呀,返回啊,一定注意它返回的是那个值啊,返回的是那个值,但是这里边它有一种特殊情况,什么特殊情况呢?我要删除一个Z,删除一个Z,注意这个时候里边有没有Z,有没有Z,没有Z吧,诶没有Z,我们这一保存一执行干嘛了,诶他是不是给我们报了一个这个报了一个错啊告诉你k error没有这个Z啊,没有这个Z,所以就告诉你干嘛呀,删不了啊就删不了,所以这个时候注意如果你删除不存在的key也会什么,诶抛出异常,诶如果删除我们这个不存在的key,它会什么呢?诶会抛出异常啊抛出异常,但是这个时候我可以干嘛,我们来看看他这个默认它是不是还有一个可选的default呀,诶default我写一个啊,我写一个写一个啊,这是默认默认值,我这直接一保存一执行,这时候干嘛了,是不是没有报错了,哎,就没有报错了啊,所以注意如果什么呢。
06:12
哎,如果指定了默认值啊,如果指定的默认值在删除我们这个不存在的这个key啊,Key值它什么呢?它不会报错,哎,而是什么呢?而是直接返回这个默认值啊,返应默认值,所以像我们刚才没写默认值的时候就报错了,你写上默认值以后发现什么了,删不掉,删不掉怎么办?删不掉就返回默认值啊返回默认值这个是我们说的一个泡泡啊泡泡删除指定的啊根据key去删,那这里边你要注意了,注意什么呢?看着啊,我们来delete,我直接delete,我们这来一个这个delete,我来一个这个Z啊delete z,哎,Delete谁呢?这个D里边的Z对吧,D里边的Z,这时候我一个一直行走一个就麻了,是不是也报错,哎,也报错,所以注意你用delete去删除是不是也会报错了,哎,我们说了Z不存在啊,这里就干嘛呀,报错啊,抛出异常啊,抛出异常,然后还有什么呢?还有我们这个泡泡item啊,你来看一下。
07:12
我这直接D点,哎,Result等于一个D点一个泡泡item直接掉一下一直行,哎现在呢,把F删了对吧?F删了我再掉啊再掉走走掉三次啊掉三次这一直行,哎是不是现在是空的了,哎空的一个都没有了,一个都没有了,注意我再掉一个,是不是现在我再删除一个空的呀?哎空的我们这一执行走一个干嘛了,报错了吧?哎叫做pop item这个字典是什么呀?是空的啊,字典是空的,所以注意当你用pop泡item去删一个空字点的时候干嘛?哎会报错这写一下啊当哎我们使用这个泡泡item删除一个这个空字点时,哎,它会什么呀?哎会抛出异常啊,会抛出我们这个异常什么异常也是key error pop it这个字典是一个什么呀?是一个空的啊,是一个空的,这1.1定要注意啊,一定要注意好,这个是我们说的一个。
08:12
他们啊,他们给他住了吧,删除当然删除还有一个最后一个,最后一个呢,也是这个最狠的谁呀,我们来看这叫什么呢?有一个叫做clear啊clear猜一猜了remove啊item from的哎字典啊是吧,就是删除所有的项啊,删除字典当中所有项,我这直接掉一个地点,一个可粒尔,但是现在我这字典诶没空,我这是不是住了,哎住了我这一执行是不是就没了,哎就没了啊,所以这叫一个可粒尔,可粒尔。可粒跟我们那个序列那是一样的,对吧?可粒尔用来清空我们这个字典啊,用来清空我们字典,它会删除我们字典当中所有的这个像,那好,那这个是我们说字典当中的删除的操作是吧?比delete delete and,泡泡,还有这个泡泡item,我们这就都说完了啊,这是删除的,删除完了以后我们再来看啊,再来看下边一个,下边一个我们说一下叫做一个copy。
09:17
哎,我们先来说这个copy,在这copy,我们在这个列表的时候,实际上也看到copy了,但是列表时候看到copy呢,我也没说对吧,我也没说,那在这里我们来一块说一下,其实作用是一样的,Copy该方法干嘛呢?哎,该方法用于对我们这个字典进行什么呢?进行这个潜复制啊,进行这个潜复制,那什么叫潜复制啊,什么叫潜复制,我们先看一下啊,我们先看一下,呃,我们这里边它是干嘛用的啊,干嘛用的?呃,假如说我这有一个字典啊,我还是整一个新的啊,我直接复制吧。直接来一个这个D啊,直接来一个D,那这个时候干嘛呢?有一些情况下,我想需要创建一个D的副本啊,创建一个D的副本,我希望这个D的副本能跟他是独立的,我如果是这样的话,我直接第二等于一个D,那我问你现在啊,我先打印一下啊,打印一下D,哎,等于我这来一个D,然后呢,我这再来一个第二等于这么一个D2,那我问你现在这两个两个变量打印的结果一不一样,诶很明显这里是一样的,对吧,我这一执行是不是D跟D2都是一模一样的呀?哎,一模一样的,那我问你这个算不算复制,这个算不算复制,注意这个不算复制,因为什么?因为压根他们两个人指向的是不是都是同一个对象,也就说到此为止,对象有几个,哎,对象只有一个,而他们两个指向的都是同一个对象,所以这个并不叫复制,那为什么说不叫复制,因为你修改一个会影响到另一个,说过吧,哎,我们这个对象的问题,那在这我们来看一下,我直接来一个D,一个这来一个这个B。
10:56
诶B等于一个这个十,十,我们这一保存一走,是不是两个都变成十了,哎,因为它们两个压根都是什么呀,一个对象啊,一个对象,那怎么叫复制啊,那复制就是我再给你复制一份,而这两个之间是没有关系的,是相互独立的,那这个时候你可以调一什么,调一个D点一个什么呀,诶D点一个这个copy copy b点一个copy,那这个时候我们先打印一下来看效果,这时候是不是也是一样的呀?哎也是一样的,但是注意区别可大了,区别在哪?它们两个实际上是两个对象,我们来看什么呢?IDB的ID,这再来看一个什么呢?哎,第二的ID,两个ID都看一下,我这一执行ID一个样,诶ID是不一样的啊,一个是3568,一个是3664,对吧,但是如果你刚才是直接等于D的时候,这显而易见,ID是什么呀,肯定是一样啊,ID肯定是一样,那这个叫做一个复制,那复制有什么好处,复制完的对象,我们来说一下复制以后的这个对象和什么呢?和我们这个原对象哎。
11:56
原对象是独立的,哎是独立的,哎也就是说什么呀,哎,你修改一个,它不会影响什么呀,哎不会影响另一个啊,不会影响另一个,另一个啊不会影响另一个,那所以这个时候看着我来一个D,我这来一个A,诶A等于一个100,我们来看效果一直行,第一个变了,但是第一第二页变不变,没变,因为它是一个独立啊,它是一个独立copy,我们的复制序列里边那个copy一个意思都是这回事儿,就是复制一个对象啊,复制一个对象,但是注意这里是浅复制,什么叫浅复制,它只会复制这个对象里边的值啊,它只会复制里边的值,那假如说什么,假如说我这个对象里还有一个对象,比如说我这什么呢?我这个这个这个字典里边,它的值还是一个字典,哎,比如说我这一个AA的值干嘛呢?还是一个字典啊,还是一个字典什么情况呢?啊,我们来展示一下吧。
12:56
展示一下啊,在这我直接来写一个DD等于一个A啊,A的值呢,A的值不巧,A的值干嘛呀,还是一个字,点A的值里边有什么呢?有这个name name叫做一个孙悟空,哎,注意这么写是没有问题的,因为我们说了字典的值是不是可以是任意值啊,是什么值都行啊,是什么的值都行,那这个时候我们来打印一下这个D,那这个D的值A值也是没有加引号啊,加引号这个值行,那现在这个D是不是这样的,哎,是这样的啊,那这个时候你注意了,我这来一个,我还是来一个D2等于个D点一个这个copy啊,D点一个copy,我们这一保存一直行,现在两个人是不是一样的,并且这个对象这个地址是不是不一样啊,但是这时候你来看啊,我们来注意了,我干嘛呢?看着我来一个第二,这来一个中号里边的A,然后这再来一个中号,来一个name,这能看懂吗?哎,实际上就是修改什么,修改第二里边的K那个A对吧?再修改A的谁呢?A的这个name值。
13:56
啊,也就是修改的孙悟空啊,我改什么呢?我改成一个猪八戒,猪八戒啊,猪八戒我们这一执行,咱们来看干嘛了,是不是两个都变了,哎,两个都变了,哎同学说老师你不是说是复制吗?不是复制吗?为什么复制以后不应该是独立的吗?为什么里边这没变呀,哎,没变,你看是不是独立的内存地址是不一样啊,但是里边的没变,为什么?来说一下复制以后的对象,哎,我们说浅复制注意了,嗯,注意我们这个浅复制。
14:31
诶潜复制只会什么呢?诶只会简单的,诶复制我们这个对象,诶内部的这个,诶值啊内部值,那如果什么呢?诶如果值也是一个什么呢?诶也是一个这个可变对象啊,也是一个可变对象,那这个可变对象干嘛呢?它不会被复制啊,不会被复制什么意思,就是说这个东西它是一个什么,它是一个,这个是一个字典啊,是一个字典,它是字典内部的字典,你说我们这个复制只会复制这个字典本身,而你如果内部还有一个字典,这个字典是不会被复制的,他直接把引用就给拷贝过来了,就把那个地址拷了过来,它是不会被复制的,所以这叫做一个什么呀,叫一个浅复制啊,浅复制对象对对象内部的对象不会被真正的复制啊,不会被真正复制,这1.1定要注意啊,一定要注意,诶那同学说老师那你这么样一做这复制是不是就没有意义了,我们是不是应该不用潜复制啊,啊不对,我们一般都会用什么。
15:31
都会用浅复制,像深复制,我们说深层复制,就说把所有东西都复制,把外边复制,里边也给它复制一份,这个时候会有一个问题,就是性能会很差啊,性能会很差,所以一般深层复制会相对来说用的比较少,一般要用的话都会用到这个浅复制这个copy啊,这个copy好,那这个是我们说的一个复制这个copy啊,关于序列那个copy,你对比着记忆一下就OK了啊,对比一下一下好好体会一下这个浅复制啊,体会一下这个潜伏制,自己呢写一下试试啊,写一下试试。
16:05
好,那这个是我们字典的使用的一些这个方法啊,大家自己来熟悉一下啊,把这些方法多敲两遍啊,多敲敲,现在还是还没有练习,把这个方法自己来过一下啊,自己来过一下,我们还是评一下。
我来说两句