00:00
好,同学们啊,现在呢,我们再介绍下一种符合类型,叫做字典啊,那么跟我们的记录相比呢,字典这种数据类型呢,它出场的机会呢,实在是少。哎,首先呢,给大家介绍一下什么是字典啊。呃,我们可以看到字典啊,可以看到呢,字典和记录它很像,但是呢,呃,在K和value上的要求呢,有所不同,那么在一个字典里面呢,哎,这个字典里面的所有键它的类型呢,必须相同,哎,但是而且值呢,所有值啊,所有值的类型呢也必须相同啊,那么可以看到之前呢,我们在record里面,我们规定这个键的类型呢,必须得是字符串。啊,但是现在呢,在我们的字典里面,我们没有说键的类型必须得是字符串。啊,只是说呢,多个舰值队之间,所有的舰职队啊,它的舰类型必须得是一样的,而且所有舰值队它的值也必须得是类型一样的。
01:00
啊,那么接下来呢,我们去这个web UI上呢,给大家写一下来敲一下这些代码。好吧,之前倒的这些包呢,全部给它干掉啊,有些很多都是没有用的。好,那么接下来呢,再把这个中间的这些代码给它删掉。好,那么现在呢,我声明一个变量A,然后呢等于号赋值,现在声明一个字典,那么这个字典呢?啊,之前我们recall用花括号,那么我们的字典呢,现在不能用花括号,是用中货号开始的。哎,中括号开始之后呢,我们再去写这个啊,我们的,呃,建筑队现在呢,我先写一个name,好冒号。哎,我现在是Tony Tony。再加上一个逗号。哎,现在呢,我再去说明一个剑支队,比如说这个剑的名字呢,叫A。呃,然后呢,我再去说明一个值叫18,哎,你会发现这个时候呢,就已经开始报错了,为什么?因为我们说呃,这个在一个字典里面呢,所有键值对的值的类型得一样,但是你这个18呢,明显和前面这个Tony呢不是一个类型,前面是字符串,你后面呢是整数。
02:09
啊,现在我们可以尝试把这个字典呢,甩给我们的,呃这个呃,输出结果来看一下。啊,直接把这个A呢放到这里来,点击提交。哎,可以看到这里面的已经报错了啊,说这个期望一个字符串,但是找到一个int啊,那么接下来呢,我们把这个18改成字符串。好,再次点击提交。啊,又可以看到这里呢,直接说我们这个呃,字典这个类型呢,它是不能作为一个字段类型的啊,那么说明我们这个呃,Fla的输出的表流呢,也不支持字典这个作为一个列的类型,呃,接下来呢,我们还是用display这个函数。来把它格式化的展示出来,好,点击提交。往下拉一下,哎,可以看到我们我们现在这个字典呢,就成功的打印出来了。
03:02
啊,那么接下来呢,再讲一下关于这个自检的操作。啊,首先呢,是依赖于一个包啊,我们对这个字典的操作呢,并没有这个A点什么的这个呃,取值语法,也没有A中括号这种取值语法啊,我们对字检的操作呢,都必须依赖于dit d这个包来进行。啊,往上拉一下,哎,可以看到这里面呢,一共有四个函数。呃,首先呢,我现我现在呢,演示一下这个d.insert函数。好啊,那么接下来给这个A呢,去插一个值。嗯,比如说这个d.insert。好,哎,可以看到这里面呢,其实需要三个参数啊。呃,那么这里不自动提示的话呢,我们去看右边F1截二图。好。呃,那么首先啊,首先这里呢,需要一个字典,这个ER的意思就是插入啊,是插入一个新的建筑队。
04:03
啊,这里呢,需要一个字典。也就是被插入的对象,这里呢,我们直接把A传进来dict啊,然后呢,还需要一个名称为K的啊,那么一个参数啊,那么我们现在呢,打上K。诶冒号哎,可以看到这个K呢啊,要插入这个字典的K,必须和我们已经存在的这个字典里面的K类型的保持一致,啊是这个文档上写的,那么接下来呢,我们给这个K的名字呢,就叫啊,就叫has he。表示我们的身高。啊,那么现在呢,可以看到还需要一个参数,名字叫default。呃,那么按照这个文档的描述呢,应该是说要插入的这个值啊,这个是键,那么应该还要插入一个值啊,当然参数的名称呢,叫default,叫默认的意思啊,现在先试一下。啊,感觉哪里怪怪的啊,那么还是要跟我们之前呢,已经存在的字典里面的值呢,类型一致,这里呢,我们就写一个字符串的200。
05:06
好,点击提交。呃。可以看到这里面报了一个错啊,说我们需要一个名称为value的参数。呃,但是这里面好像没有说他需要VALUE6,呃,那么这个时候呢,我更愿意相信是我们呃前端的bug,呃,这个时候我们可以去看一下这个。官方的文档。啊,官方文档。好,可以看到这个di.de特点,Insert呢啊点过来啊,它这里呢说呃,需要三个参数,你可以看到这里面是det k和value啊,那么它就没有这个名为DEF的参数,我怀疑呢,那就是应该是这个web UI呢弄错了。啊,现在呢,我把这个value呢改把这个default呢改成value value好点击提交,而且呢,这个标红也不标了啊。好,可以看到呢,现在我们这个啊,是因为我现在这个啊,现在展示的还是H18内姆托尼,是因为我这个d.insert的函数呢,哎,返回值没有被接住啊,我们用B来接一下,然后呢,把这个V改成B,点击提交。
06:17
好,可以看到啊,现在呢,我们向里面插入了一个建筑队,叫啊,就叫这个害死200。好,除此之外呢,我们的这个银色的方法呢,其实还可以覆盖原先的建设队,比如说我现在把age,把这个has改成age,那么age呢,就是200岁,哎,点击提交看下这个效果。好啊,可以看到我现在得到的B这个字典呢,它其实age呢,已经变成200啊,不是原来的18了啊,那么这就是我们d.insert的一个用法。呃,接下来呢,还有一个方法叫remove啊remove,我们把这个呢改成remove re move啊看一下它需要什么参数啊。我F1截图截一下。
07:01
啊,底下呢,还有视力啊,可以看到有视力。好,呃,那么这个时候呢,首先是一个要删除啊,要删除键值队的,呃,从哪这个字典啊,也就是以A为圆DA。D冒号把A传进来啊,然后呢,我们要从A里面呢,删除啊,删除这个某个键,比如说我要删除age,写K冒号age。好啊,同样呢,是用B来接收它的返回值啊,现在我们还是点击submit。好,可以看到呢,我现在得到的新的字典呢,啊,只有name这个建筑队了。啊,那么最后说一下呢,还有一个di.get方法,那它是用来取值的。哎,把这个remove换掉,改成get,可以看到这个。啊,里面呢,需要传。诶,居然也需要一个default,我觉得这个才是正常的啊,啊需要传一个,需要传三个参数。
08:04
啊,首先呢,是我们要从哪一个字典里面来取值啊,这个参数名字呢叫Di d啊传入我们的A。啊,要从A这个字节里取值。然后呢,我们要取哪一个键的值,这里呢是K冒号啊,我们要取age这个K的值啊,就写一个字符串H啊,最后呢,还需要一个参数叫default df。AULT。好冒号啊,这个意思呢,就是如果我这个字典里面呢,没有age这个键,那么我要用这个啊一个默认值呢,来进行一个替代啊,此处呢,我写一个呃244。好,现在我点击submitit看看效果。啊,可以看到啊,这里重新登录一下啊。啊,重新提交。看原始数据。啊,可以看到我现在呢,因为这个字典里面有age这个字段啊,有age这个建制队,呃,所以说我现在得到的结果呢,就是get age得到的就是18,呃,如果我现在呢,要去获得H2,那么我现在这个字典里面是没有H2这个键的,我点击提交,诶,可以看到我得到的就是244 244啊是我这个default提供的后补值。
09:22
啊,那么跟我们的不一样的是呢,我们之前说呃,获取record的哪个键呢?诶必须需要在这个代码里面直接写死啊,比如说啊,写一个C这个变量,等于诶我再写一个这个什么record。啊,比如说内,哎,稍等换上大写了啊内是Tony,呃,然后呢,A值是18,好呃,现在呢,我去获取这个,呃,C里面的一个值啊C里面的一个键,那么C。
10:04
就只能这样直接写死常量对吧?啊,如果我这里呢,直接写成一个变量。传进来呢,就会报错。好,可以看到会报错啊,那么在这个字典里面呢,我们就没有这种烦恼啊,没有这种烦恼在字典里面呢啊,我们可以直接用一个变量来进行取值啊,比如说我这里呢,还是说明一个变量叫K。等于age啊,此处呢,我就不写这个常量了,我直接把它改成我们的变量就是k k name,好,然后呢,就直接点击运行,诶可以看到我现在k name的值呢是age,那么这个就相当于获取这个字典里面的age这个键的对应的值,那么就是18,如果现在换成换成H2呢H3,呃,那么它现在呢,你可以看到没有这个键点击提交,那么拿到的呢,就是我这个默认值。
11:08
呃,最后呢,再说一个最后一个方法啊,其实这个方法呢,有点鸡肋啊,就是from list。啊,那么这个方法给大家演示一下,也就是我还是先说明一个变量叫A啊d.from list,好,可以看一下它需要什么参数,需要一个pairs啊。这里面呢,这个参数呢,叫a of records,也就是它是一个由records组成的数组,然后呢,它这里面你可以看到啊,所有的record呢,必须符合一个格式叫K冒号,Value冒号,哎,用这个record呢来指定一个介着对哎我们这里可以试一下,那现在呢,他说是需要一个pars这个名字的。参数好,现在呢需要一个数组,数组里面呢全是record的,我这里呢写两个,哎,首先第一个数组它需要一个,哎,建筑队叫K冒号啊,然后呢,我们的这个就是建的名字叫name,然后呢又需要一个K叫value,哎,然后呢,它的这个值呢,就相当于我们的这个字典里的值了,Toy,哎,此处呢,后面我再跟上一个一样的结构。
12:25
哎,这边直接复制啊。啊,后面这个呢,换成A啊,再换成18好啊,现在呢,点击提交啊,我们把这个啊,但不行还得把这个。把这个A,把这个原来的这个B啊,换成A啊,点击提交。好,可以看到其实我们现在通过一个由由record组成的数组呢,得到了一个字典类型。啊,那么由此呢,我们必须要考虑一下字典类型是干什么用的啊,那么它呢,其实用来做映射的啊,映射。
13:01
呃,假如说呢,我现在去查询数据,然后得到一张表,表里面呢是一行行的record。啊,此处呢,我先给他假设几个字段,比如说。啊,有个字段呢,是这个。啊,商品的编号扣的啊,那么这个编号呢,很长很长很长,我就不敲了啊,最关键的是有一个叫做菜啊类型。呃,那么ta呢,只有一个数字表示啊,零一呢,可能表示日用品,然后零二呢,哎,可能表示我们的一个啊电子产品。啊,那么零三呢,可可能表示我们的一个柴米油盐酱醋茶,呃,零四就可能表示我们的洗浴用品啊,那么这样的话呢,啊,我们需要去维护一个字典,这个字典呢,就是哎。零一冒号日用品。零二冒号。柴米油盐吧,啊,刚才说的好像电子产品啊啊不管了,后面呢用省略号表示。
14:04
呃,那么当这个数据过来之后呢,我们可以知道就是这个类别呢,它其实是有限的,可能一共呢,也就那么二三十种类别啊,所以说我这个数据呢,01020304,它呢会不停的重复啊,如果说我我有需要啊,又需要去把这一个编号换成一个啊人类可以读懂的字符串,那么我就需要去维护一个这样的字典。啊,那么这个字典呢,它可以很方便我的编程啊,如果没有这个字典,我们可以想象一下,呃,这个代码呢,如果要实现这样的功能,就需要写一大堆的什么。哎,写一大堆的这个if,哎条件,然后呢,Then else if then else啊,你要不停的往下套啊,所以说呢,相对来说呢,字典的话可以让我们的代码变得更加简洁。好,同学们啊,那么这些呢,就是我们字典的用法。
我来说两句