00:00
好,刚刚我们介绍了一下字典,接下来我们来介绍再说一下我们这个字典的,呃,各种操作,那关于字典操作呢,我们来看的时候还是以这个官方文档为准啊,官方文档或者呃,咱们这样吧,咱们可以参考官网的文档,呃,因为我们这个离线文档的话,它要乱码,你看离线的也行,我们还是啊把这都找一下,还是再熟悉一下这个位置,嗯,Documention这个PYTHON3,哎,然后找到我们这个叫做一个library reference啊library reference,我们这是不是有一个building types啊,哎,我们的map哪呢?Map,我我们这个字典在这儿啊,Mapping types映射类型,映射类型就一种,就是一个字典啊,就一个字典,直接点进来,然后在下边就会有它的一个说明啊,你可以通过这儿来看,你也可以看离线版的,离线版的就去找我们这这个这个Python是吧,Python3.6我们找到这个离线版的,在这里也可以看,也是一样的,我们这个哎叫做一个standard library,然后找到我们这个mapping type。
01:01
啊,也可以找啊,也可以找两个位置都行,其实都是一样,就是这里边会稍微有一些地方有一些乱码啊,有些乱码,但是呢,也不是特别的严重啊好,那我们也不会画,我们直接来说了,待会我们就对照回章来说啊,那这里边我们还是新创建一个文件,这是我们的第十二一个,我们来说一下我们这个字典的一个使用啊,字典的使用,字典的使用我们还是还是没有写扩展名对吧,重名名我们来一个点一个PY,字典的使用我们还是先从我们的这个这个。还是先从我们这个创建开始说起,创建字典啊,我们把这些东西给它列全了啊,创建字典呢,第一种方式我们已经说了,第一种方式使用什么呀?哎,使用我们这个大括对吧?大括它的语法就是什么呢?如果你要写空的就直接写行了,语法就是一个大括,然后这是一个,哎,K1冒号一个V1,然后这是一个诶逗号一个这个K2冒号一个V2,诶逗号,然后K3冒号一个V3啊就是我们KY的意思啊,KY的意思我就写这么一个语法啊,比如说我们的键和值之间用冒号来隔开,然后多个项之间使用逗号来隔开啊,就是我们说的一个键值数结构啊,这么一个语法啊,那这个是我们说第一种创建方式,之前已经演示过了,对吧?这里我们就不再去重复的去演示了啊,重复演示了,那接下来我们再来说还可以干嘛呢?我们还可以使用,诶还可以使用我们这个DCT啊,DCT这个什么呀函数,哎,来创建我们这个字典这个东西,怎么创建这个东西。
02:34
创建方式还挺多的,我们先来说第一种方式啊,第一种方式,第一种方式我们叫做一个这个,诶直接写一个这个叫做一个来一个D啊D小写D啊等于一个DT,我们字典不是一个这个KY的建筑的结构吗?我里边直接写,比如说我来什么呢?哎,我们这么写吧,诶name等于一个孙悟空,然后这来一个A等于一个18,再来一个这个詹等于一个这个男,那这样我们就创建好了一个这个字典啊创建好一个字典,我们来看效果啊,看效果在这里我们直接print一下这个D,然后呢,这我们来一个这个tap一个这个d tap一个D啊这括号应该是又有问题啊,Tap一个这个D啊,我们这一保存一执行,诶,我们来看是不是就创建这么一个字典呀,哎,Class这么一个D啊DCT,所以这里边我们是怎么做的,实际上我就是给这个字典这个函数传了多个。
03:34
参数传了几个参数,123个参数啊三个参数name等于孙悟空,那这name就是我们的K啊,我们这个孙悟空就是一个什么呢?Value h等于18 H就是K 18就是VALUE6干等于难就K,难就是什么呀?难就是Y6,那这个其实就什么呀?诶这个东西就是每一个参数啊,每一个参数都是一个什么呀?哎都是一个间值,对啊间值对参数名就是键,参数值就是值啊哎参数名哎就是这个键,哎参数名哎就是这个值啊就是这个值,这个是我们说的一种方式,而且注意啊,而且注意这种方式我们创建好的,这种建制结构,这种方式我们创建好的,注意了它的这个键,它的这个键都是什么字字符串,诶这种方式创建的这个字典,哎叫做一个字典,它的这个K,哎都是什么呀?哎都是这个字符串,一定注意啊。
04:34
这些玩意儿啊,Name也好,Age也好,我们这个粘也好,它都属于什么呀?哎,都属于叫做一个字符串啊,都属于叫字符串,然后我们接着来说还是我们DCT,它除了这种方式以外,还有一个一个方式,就是说我们实际上在我们的这个DCT当中,我们还可以传什么呢?我们还可以传一个这个。序列啊,作为开来这里边我们来说,我们也可以什么呢?哎也可以,哎也可以将一个什么呢?哎,将一个包含有我们叫做一个双值啊双值。
05:15
双值子序列啊,双值子序列的这个序列,哎,转换为我们的字典啊,双值子序列的序列转换字典,那同学看到这句话可能会觉得有点拗口了,对吧,拗口我们先解释第一个问题,我们先说什么叫双值序列,哎,双值序列。双值序列,双值序列指的就是我们这个序列中干嘛呢?哎,序列中有什么呀?哎,只有两个值啊,只有两个值,比如什么呀,比如我们这来一个中号,我这来一个这个一逗号二这就是一个什么呀双值序列,我来个括号,来一个这个A,然后这来一个逗号,然后三这也是一个双值序列,或者我来一个字符串AB,这也叫做什么呀,双值序列,所以注意啊,我们这个就叫做什么双值序列,就说序列里边只有两个值,你说我再来俩吧,这叫叫双值了,就不叫了啊,多一个也不行,必须只有什么呀两个啊,尤且只有两个叫做一个双值序列,那这里边我们又提到一个叫什么呀?叫子序列啊,叫子序列,子序列什么叫子序列啊,哎,如果一个,如果序列中,呃,序列中的元素也是序列啊,也是序列,那么哎我们就称它为什么呀,哎称为什么呀,哎子序列,哎称哎这个元。
06:39
作为子序列啊,为子序列,所以这个什么叫子序列,看着我,比如我写中号里边我再来一个这么一个一逗号,然后我这再来一个逗号,然后哎,这来一个三逗号四啊三逗号四,你会发现我在我的这个这个列表里是不是放了两个元组作元素啊,哎,两个元子作元素,那这两个元素就是我们列表的一个子序列,就是在序列内部的序列叫做一个子序列,那什么叫双值子序列,就是子序列里边只有两个值啊,子序列只有两个值,这就叫双值子序列,这也叫什么呀?双值子序列啊,双质子序列,那我们说如果一个序列中它的所有元素都是双值子序列,那我们就可以把这个圆这个列表,这个序列转换成一个什么呀,转换成一个字典,直接演示啊,D等于一个D,我们来看效果,我这来一括号里边我们传一中号,直接传一个列表,列表里边写来一个name,这来一个逗号,来一个孙悟空,然后我们,诶,我们。
07:39
咱们这儿来一什么呢?来一个这个age,我这冒号来一个18,我就写两个吧,这个我也不叫孙悟空了,我叫做一个这个,哎孙悟范,哎孙悟范随便写一个,那现在注意我现在这个是不是就是一个列表啊,列表里的元素还是什么呀,还是我们这个序列啊,还是序列,而且还是什么呀,双折子序列,那它就可以把它转换成一个什么,转换为一个。
08:05
叫做字典啊,一个字典,那这里边为什么要双值子序列啊,那其实你猜也猜到双值肯定是一个值做K,一个值做value啊,所以这就是name做K,诶这个值做VALUE6,这个A做K18做VALUE6,所以这个时候我们一执行,我们来看效果啊,这块还给我们包哦,我这应该是写了一冒号,应该什么呀,逗号,因为它是一个序列啊,它是一个序列来我们这保存一下,直接运行,这时候你看是不是这个效果呀,哎,这个效果class类型还是一个DCT啊,还是一个DCT,那这个就是我们说的一个,诶也可以通过DCT将一个双包含有双值子序列的这个序列转换成一个列表,这种方式也会用到,但是相对来说就是用的时候是一些这种什么呀,特殊情况我们会用,一般情况相对来说用的会比较的,哎,比较少啊比较少好,那我们这是我们说创建的这么两,这么算是三种方式吧,哎,一种我们常用的方式,然后一种用我们这个DCD2种方式对吧。
09:06
好,那接下来我们再继续往下说,再继续往下说呢,其实再往下说就跟我们这个这这这个叫做一个序列就有点像了,我们叫做一个Le啊Le这个函数它可以什么呢?哎获取我们这个字典中什么呢?哎字典中我们这个项的个数,哎或者说什么呀?哎就是我们这个间值对的一个个数什么意思啊,就是来看一下我字典里边有几个建值,对这个跟那个字跟那个序列是一样的,我们直接打印了print,我们直接来一个l Le,我们来什么呢?来一个D啊看它啊看它我们这一执行走一个是不是二啊,哎二因为它里边现在是不是就就两个呀,哎就两个来,我把这往下挪,往下挪这一保存,这时候一执行是什么呀?哎是三个啊,就变成三个了啊,所以let是获取,获取我们字典中这个键值对的个数,或者你也可以说是获取我们字典的一个什么呀,长度啊,一个长度好啊,那我们说完了,然后还有什么呢?还有一个我们叫做一个这个印啊印,还有我们这个not印啊not印。
10:06
这个东西在我们的这个这个序列里边是不是也有啊,诶检查序列中是否包含某个元素对吧?而这个印呢,它是干嘛呢?它在我们这个字典里,是检查我们这个字典中,诶是否包含什么呢?诶某诶指定的什么呢?指定的这个键not in是检查字典中,诶是否什么呀,不包含指定的这个键,这两个操作正好相反的,所以在这我们直接print一下,我们来看一下啊,我直接name in d,我检查D当中有没有name这个键,我这一执行什么玩意处是不是表示有啊,哎,有,那再看一个,我来一个hello,那就表示我检查这个D当中有没有hello这个键,我这一执行什么玩意儿for是不是就没有啊?哎,没有,这个我们就不多说了啊,它的一个in检查字典中是不是包含指定的一个键,那注意这个是检查什么呢?是检查键的,它不是查这个什么呀,哎,查这个这个直的啊,查这个直的好,然后我们再来说,这个是我们说。
11:06
的这几个操作是吧,创建,然后还有这个检查这个哎长度,还有这个印啊,那的印我就不演示了啊,接下来我们再来说,再来说的就是我们说我要向哎,我要去。获取我们这个字典里的这个值啊,获取我们是不是已经说了,哎获取获取我们字典中的这个值,哎,我们需要什么呀,我们需要根据这个键来获取值啊,获取值语法是怎么写的语法我们是一个DD,这来一个中号,里边是我们这个键,或者直接写一个就是我们这什么呀?哎,Key啊,我们这个key里边传一个这个key,那这里边注意了,我们来看一下,直接打印一个,比如说我想获取到D里边这个name,这个值直接D,我这中号来什么呢?Name注意啊,注意我这个name必须得加上字符串,加上引号,为什么要加引号,因为我们这个键是不是就有引号,哎键就有引号,如果你这我们先看看啊,这种情况,我这一执行是不是孙悟空就获取到了,哎,获取到了,但是如果你不加引号什么效果?哎,你不加引号,我比如说我要来一个age,我没有加引号,这是什么效果,这是一执行,我毛了报错了,告诉你name age is not DeFine age这个变量没有定义,也就是说这你如果没有加引号,它。
12:18
是不是会当成一个变量去处理啊,哎,当成一个变量去处理,那这个时候就不行了啊,所以这块注意一定要去加上这个引号,因为我们这个K这是不是就加引号,哎,加引号那你说同学老师找到这,你就这不没加吗?哎,用这种方式创建的,它会自动加啊,自动加自动变成这个字符串,我这一执行是不是就取到了,哎,就取到了啊,所以注意一定注意该加引号的时候千万不要忘了,但是有一些情况你不该加引号,你也别加什么情况,比如说这种情况我现在注意了,这里边我现在定一个变量an等于name,也就是N的值是一个name在这,我如果取的话,我可以直接D来一个什么呢?N,哎,来一个N,那现在我们是什么?我们是取变量名,我是取这个K为N的值呢,还是K为name的值呢?哎,是name,因为我们N是一个变量,它的实际值是不是name呀,哎,是name,这个时候我们一执行是不是取的还是孙悟空,哎,还是孙悟空,这个时候你就要注意了,千万不要给它干嘛呀,加引号,加引号还是不是变量,哎,就不是了,这时候一取就干嘛了。
13:18
是不是报错了,哎,K ever没有这个N这个变量,所以这个时候注意什么时候该加引号,什么时候不该加引号,如果是个变量,你就别加引号,如果就是一个直接字符串,那你就把引号给它加上啊,其他的是number就写number是不尔值就写不尔值是,那就写捺,该写啥就写啥,但是一般都是字符串啊,一般都是字符串,好,那这个是我们说的一个这个诶获取,但是我们用这种方式获取呢,它会有一个小问题,小问题什么小问题呢,我们通过我们这个叫做一个。中块来获取我们这个诶知识啊,获取知识如果什么呢?如果这个键不存在啊,如果键不存在会什么呢?诶会抛出异常,诶会抛出异常什么异常啊,我们刚才看了是不是k error啊,哎,就是一个k error,我们来看是在这儿啊,哎叫做一个KL啊K写错了啊,写错了,所以你在用它的时候一定要加倍小心,你一定要很明确,在你的这个列,在你的这个字典中的的确确是包含有这个K,如果没有,那这个时候就不要去用了啊,这个时候就不要去用了啊,那我们如果说你不确定的话,那这时候你就需要干嘛,哎检查一下,你可能先用in检查一下,如果是返回处你再用,哎,如果不返回处你就干嘛了,你就别用了啊,你就别用了,当然我们这还有一种别的方式,在这里边我们来看一下,直接找到我们的文档啊,文档刚才我们说的,其实在这里边都有啊,什么D的key啊Li啊,我们来找谁呢?找有一个有一个方法。
14:55
啊,它可以用来获取我们字典里边的值,叫做一个get,这是方法啊,这方法得通过,得通过什么呀,得通过我们这个字典对象来调啊,叫做一个get,这个是来干嘛的呢?诶,该方法用来诶获取我们这个字典中的什么呀?诶来干嘛呢?用来诶根据我们这个键,诶来获取我们这个字典中的什么呢?中的这个值啊中的这个值,那所以有了它以后,我也可以怎么获取呢?我可以直接print来什么呢?诶来一个地点一个get,我里边写一个name啊写一个name,咱们来看一下我走一个是不是也是孙悟空,哎,也是孙悟空,你会发现这种方式跟我的这种方式是不是基本上是一样的呀?哎,但是同学说老师你这种方式是不是还麻烦了呀?哎,的确看着是有点麻烦是吧,但是我们来看它的特点啊,我这先复制一下把这住了,我这来什么呢?来一个get hello get hello是干嘛的,有没有hello这个键很明显没有对吧,没有这个键,我这一执行走一个有易报错,哎,没有报错。
15:55
这个就是它比我们这个中号的一个好处,中号如果没有就报错了,而我们这个没有,这个没有干嘛了,就是闹啊,就是那所以这里边注意如果哎,如果我们获取的这个值,哎获取的键在我们这个字典中干嘛呢?诶不存在它干嘛呢?诶它会返回我们这个那啊会返回那也就是说它是不会去报错啊,它是不会去报错,会返回这个那啊叫做一个get,并且get这还有一个可选参数default default什么意思呢?看这啊,我还是先写name啊,先写name,我们这来写一个,这是一个默认值啊,默认值我们先看效果啊,先看效果,这里边我现在来执行一下,走一个,现在是不是孙悟空啊,哎,孙悟空为什么是孙悟空啊,因为是不是有这个name呀,哎,有这个name啊好,在这儿我们来写一个hello hello,这回就没有了啊,我们这儿一直行走,一个是不默认值,哎,默认值,所以这个值你就知道什么意思了,这个默认。
16:55
是什么意思,如果这个hello不存在的时候,它是不是就返回默认值,哎返回默认值哎,我们来写一下,我们也可以,诶指定一个什么呢?诶默认值诶来作为什么呢?诶作为我们这个第二个参数,诶这样获取不到值是。
17:14
诶获取不到值时,诶将会返回我们这个默认值啊,默认值这是我们说的一个get啊get其实比那中号那种更安全一点,因为它不会出现异常啊,不会出现异常好这个也说完了,这个是我们说的一个这个获取的方法啊,获取的方法,获取的方法完事以后我们来说一下干嘛呢?诶我们来说一下修改,修改我们这个修改我们这个字典修改字典修改呢,主要这么几个是吧,第一个第一个name我想改了,我不想叫孙悟空了,我想改一个名怎么办?诶修改其实非常简单,直接就是什么呢?D,然后中号里,诶我们这是一个D啊D里边我们来一个什么呢?诶K,然后等于一个什么呢?等于一个value这个哪,诶修改直接来演示啊,这来演示,比如说我想改name,我直接来一个D中号,我们这儿来一个这个什么呢?来一个这个name name,然后在这我直接等于一个这个孙悟空啊,孙悟空改成这个英文的啊,改成拼的,那这个时候我们再来打印一下。
18:14
这个D啊print一个这个D,这一保存一执行是不是就变了啊,就变了啊,所以改的时候你可以直接去改啊,可以直接去通过这个名字,通过这个K去修改这个值啊,这是我们修改字典,这是一种方式,还诶这是改它对吧?这是改它,那有些情况下,比如说我这么写一个D中号,我这来一个这个a address a address等于一个这个花果山,花果山诶这跟刚才有什么区别,刚才在我的字典里有name对吧?有name,呃,但是有没有我the address,没有the address,没有the dress会有什么效果啊,会有什么效果,我们来看一下走一个干嘛了没有是不是就给你加上了,诶没有就给你加上了啊,所以注意这是两个上边这是什么呀?这是修改我们这个,诶修改我们这个字典的一个KY啊KY6我们这个键值对结构啊修改,哎把它这值改了,而这个是什么呀,这个是像我们这个什么呢?诶像我们这个字典中干嘛呀?诶添加我们这个。
19:14
KY啊KY的,所以其实你用这种方式去做的时候,它其实就两种结果,如果K存在,如果K存在则什么呢?则覆盖,不存在则什么,诶不存在则添加啊,不存在则添加,那这个是我们说的D,诶中号K的这么一个特点啊,存在就覆盖,不存在就添加啊这是一种方式,好,那这个是我们直接通过这种诶中二这种key value6去操作这种方式,那接下来呢,我们再来说啊,再来说,嗯,再来说呢,这个还有一种修改方式,我们在这来看一下吧,在这啊叫做一个。找一下,我们有一个方法叫做set default。
20:04
Set default site default set设置default是默认的啊,默认的它也是,它可以干嘛呢?诶,它可以诶用来,诶像我们这个字典中干嘛呢?诶来添加我们这个,诶像啊添加我们item,或者添加我们这个KY0啊添加我们这个KY,那这个方法我们来看一下它怎么用,其实你一看哎文档它这会有一个这个很详细的描述,人家写了叫什么呀?诶if key什么呀,If key in the这个字典是吧?如果这个key在字典中要干嘛呀?Return,返回它的值,如果不在插入这个key什么呀?哎。根据你这个默认值,并返回这个默认值什么意思,看着了,那我们直接来一个啊,现在我这来一个D点一个set default set default,我传一个什么呀,我传一个key,我先传一个key key我来什么呢?来一个name name我这来一个,来一个猪八戒,猪八戒啊,猪八戒我们这写一个啊,我们然后打印一下这个地,打印一下这个地,我直接保存啊,直接保存我们来看地有没有变化,这一执行孙悟空是不是还是孙悟空啊,诶name有没有变成猪八戒,没有变成猪八戒啊,没有变成猪八戒,所以这个东西什么意思啊,我们来说一下,用来向字典中添加KY啊,添加KL,如果什么呢?如果我们这个K在我们这个已经存在于什么呢?我们这个字典中啊,已经存在于字典中,则什么呢?则返回我们这个K的这个值,哎,不会对我们这个字典做任何操作啊,因说如果这个key已经有了,他什么也不做啊,什么也不做,如果。
21:47
也不存在啊,如果K不存在,则向我们这个字典中干嘛呢?诶添加这个什么呀?诶K诶并什么呢?诶并设置我们这个Y0啊并设置Y0,所以这个意思就是什么呀,我来设置一下这个值啊,设置一下这个设置name这个key,如果这个K存在,存在怎么办?存在它在这会有一个返回值result result是谁?Result就是这个key的值,我们来打印一下啊,这来打印一下print,我们来一个ret result等于我们这来一个result啊打印一下,如果存在像这种内幕是不是已经存在了,这那这值还有没有意义了,没有意义了,它会直接返回那个值,是不是就返回一个孙悟空啊,哎,返回孙悟空,那再换一种情况,我来一什么呢?我来一个,哈哈,这个值是不是不存在啊,不存在怎么办?不存在我这一执行是不是添加一个hello啊哎,那最终会把那个默认值给你返回啊,默认值返回,所以这个是我们说的set default,它是比较灵活的一个一个方法。
22:47
有就返回,没有就添加啊,就添加这么一个set default,也是一个很方便的一个方法啊,Set default,然后再来说set default,说完了下边我们再往下说,下边呢,还有一个叫做up。
23:05
Date叫做一个update update它也属于一个添加的方法,那它是干嘛的呢?哎,它是诶教我们这个其他诶字典,诶字典中的这个值,哎,诶KY。哎,添加到我们这个什么呀?哎,添加到我们这个当前字典中啊,添加到当前字典中,那这一块我们直接来看效果,来来看效果,那现在我先整一个啊,整一个我还是来一个D等于一个我创建一个新的啊这来一个这个呃,我们写的这个简单点吧,A猫诶我们来一个这个AK就是A啊,值就是一,然后这来一个BK就是B,值就是二,然后我们这来一个这个K是C,然后值是三这么一个,然后我来复制一下,我来个什么呢?诶来一个第二,第二呢,我这是一个这个abcd。EF这改成一个四五。
24:05
六对吧,现在我们是不是有两个字点呀,那现在看着啊,我直接来一个D点一个up,我们来一个这个第二啊d.update我们这来一个DR,然后在这我们来补一下这个D,直接看效果啊,直接看效果啊,在这我一直行走一个发现什么了,这个时候我们会发现我D里边是不是包含了ABCDEF是不是这六个键呀?哎,这六个键为什么就是它把这两个字点合并到什么呀?合并到这个这这个D里边了,把第二合并到D里边了,所以叫rpa的啊对B2DR2进行一个更新啊进行更新,那这个时候实际上会有一个问题,什么问题呢?假如说我在我的这个DR2里边也有一个A啊,A冒号一个这个T啊,也有一个A,那这个时候是不是两个键冲冲冲突了,哎冲突了,我们来看效果,这一直行,哎,这一直行啊,我这儿没有加引号啊,没有加引号。这一保存我们再一执行,发现什么效果了,A变成几了?A变成七了吧?哎,A变成七了,也就是说D里边那个A被第二这个干嘛了替换了啊,D里边那A被第二给替换了啊,所以注意这个update是将其他字典当中的KY添加到当前字典中,如果什么呢?诶,如果有重复的这个K啊,重复的K,哎则什么呢?诶则后边的还是会什么呀?诶会替换掉我们这个当前的啊,当前的啊,也就是说这个新的A会把我们老的也给它替换掉啊替换掉好,那这一块是我们说字典的这么几个基本的操作,我们来回顾一下啊,回顾一下这说的挺多的了,第一个创建字典,这是第一种方式,然后这是我们的第二种方式,还有一个是我们的第三种方式,第三种方式稍微的麻烦一点啊,创建字典,然后呢,Le是来获取我们字典中建筑个的个数,那个像的个数,Item的个数是吧,哎,Le。
25:58
啊,然后in not in检查我们字典中是否包含或者是不包含某一个键啊,某个键,然后我们可以通过这个key来干嘛呀,来获取值啊,通过K来获取值,也可以通过get来获取值,那get相对来说更加的灵活啊,Get更加灵活,然后呢,我们可以修改,也通过K去修改,通过K去修改就是有就修改覆盖,没有就哎没有就添加啊,没有添加,然后呢,也可以通过set default来干嘛,诶来修改啊,Set default来修改,最后我们说了一个updatepad ipad可以直接把一个另一个字典当中这个KY添加到我们才当前的这个字典中,并且注意如果出现重复的key,我们前面的会被后边的给它替换掉啊,替换掉这个是我们说的一个这个。
26:41
字典的一个使用啊,那这里我们来停一下。
我来说两句