00:00
呃,我们接着来看一下map的遍历,Map的遍历,那么这个map的遍历呢,就是说我们能我们是用这个for的结构来便历的,注意啊,Map遍历不能用for循环呢,不能用简单的for循环,为什么呢?大家想一想,我们for循环在遍历的时候,其实会拿到这个数组的下标,它是按照这个数值来的,对吧?但是呢,我们知道map它的这个care。不是数字。它它不是一个,它不一定是一个123这样的东西,它可能是个字符串。所以说在map遍历的时候呢,咱们只只能用这个for来进行进行遍历,而不能用for这样的便利,好吧,那么我们来给大家演示一下map的便利,来跟上老师思路。我们来看一下map的便利。OK,那我新建一个标题二,好吧,新建一个标题二,Map的便利。那么我们举例说明,在这里呢,首先我们要强调它是用for,而不能用for循环,因为for循环它其实是按那个下标默认为0123来做的,但实际上我们知道map k呢,它不是数字,或者说这个数字不一定是连续的,它往往是字符串,对不对,所以说用这个来做,然后我们举几个案例,案例也是。
01:22
我们先演示一个比较简单的,好吧,我们先做一个比较简单的,再做一个复杂的遍历。呃,跟上老师思路。我们打开Vs code,我们来写这么一个东西。Map的便利对吧,Travels建一个。The map travels。Map travels。好,我们新建一个文件,叫命点go。好,我们从这个这边呢,我们拿一段这个共享的代码。没问题吧?好,我们演示一下使用。
02:01
使用。使用for。便利map。便利map,好,嗯,我们我们就用前面这个比较简,先用这个简单的好吧,第二种方式做的这个map。它是NUMBER1 number2 number3,好,我们来遍历一下,就分别把它每一个k value,每一段k value遍历出来,那怎么写呢?For啊for第一个是他的这个K。第二个,第二个是它的值能理解吧,因为他是建筑队嘛。然后呢,我们认一下谁cities。对不对,然后这边呢,我们输出来一下好吧。我们输出用这个格式化来输出print print f。我们写一下K。等于K等于多少V,然后呢,值等于多少,我们也来一个V,然后打完了过后呢,我们来一个换行好吧,K。
03:06
V写完了,这就是对一个。对一个map的一个便利,对不对,Map的便利,好我们来给大家看一下,走上。叫做maps。好,Go wrong,命顶go,我们可以看到这边输出的信息跟我们想的应该是一样的,来看这里。是不是这NUMBER1北京,NUMBER2天津,NUMBER3上海,大家想这个时候你用for循环肯定是做不了的,为什么呢?For循环他认为下边都是像这样子的,10123是吧,但这个时候我们可以看到它不是这样子的,因此呢,不能用for循环来做。好,这是一个比较简单的map,我们再找一个比较复杂的map给大家做一个案例,呃,还记不记得我们在前面。
04:01
写了一个练习,这个练习里边呢,呃,它是学生信息里面呢,是麦谱他的那个,呃,值值也是map,我们用我们把它进行编译,我们找一下那个东西。是不是这个呀,我们把这个粘过来。好吧,我们对它进行一个便利,这个相对复杂一点。好,我们使用。还是使用这个for。便利,一便利,一个结构便利。一个结构。结构较复杂的。结构比较复杂的。Map就这个。比较简单,是不是好,我们来编辑一下。嗯,大家可以看到这个map呢,它比前面那个map要复杂一点,是因为它的值又是一个map。那也就是说我们在进行这个便利的时候,其实要进行一个双层,就是我们要for两次,能理解吧,我们写一下啊for。
05:04
K1。V。V,然后等于range对我们这个student map进行一个便利。来吧,那我问大家一个问题,当我们这样进行一个遍历过后,这个K1是不是就是16点点零一和16.02这样的一个值,而这个V1呢?是不是V1又是一个map啊?能想到吗?是不是V又是一个map,因此呢,我们再进行里面再进行一次for循环啊,再进行for,那就是K2。V2,所以这个V2就是具体的里面的名称了,好吧,具体的值招range对谁进行便利,对V1能看懂吗?大家看一下。对不对,因为你这个V1其实又是一个map嘛,所以说我对它进行一个便利,好现在我们把它输出来看一下。嗯,为了好看呢,我先在前面。
06:02
我现在前面把它这个K1输出来,好吧,K1等于多少,我们先输出来K1。对,没没问题吧,这个K1,呃,然后呢,我们再把这个K1对应的它这里面的这个信息,比如说名字性别和地址也输出来好吗?这样写了print,那为了好看呢,我把它呃每个地方也进行一个换行啊进行换行,换行之前我们来一个。制表符这样子有一个层级关系,因为相当于说我把K1打出来过后呢,我让它换行的时候同时打一个制表符,这样就有个层级关系在里边了,好吧,那么写成K2。等于好,最终应该还是按F吧。If这个格式化一下对不对,V。然后是V2。VR等于V,好,呃,然后这个做完以后呢,我们来一个斜杠N,这个没问题吧,然后呢,第一个V就是我们要输出的K2,这个K2其实就是就是这个K1里面对应的各个K。
07:08
各个K再来VR。V2就是对应的值了,那整个这个打印完了过后呢,我们再让它进行一个换行,能理解吧,这就有一个层级关系了。好,这个就写完了。能看懂吗?好,我们来运行一下,看看效果出来了没有,跑起来先。我们可以看到,当输出的时候,诶同学们看这个信息是不是很很准确了,你看第一个K1是10STUDENT01 10student01里边呢,STUDENT01里面它又又是map对不对,这个map里面有几几几对啊有三段,一个是记录地址,一个是名字,一个是这个。呃,它的它的性别啊,这这个map里面有,就是说他这个16帧的零一。对应的是一个map,这个map里面有三对K86,一个是地址、名字、性别。
08:06
下面呢也是一样,这是一个10STUDENT的零,二也是一个K。对吧,下面呢,又对应了。三段K86。三对k value好,一样的名字,性别和地址好这个层级关系大家也应该能看出来对不对,那如果我再加一个学生,那同样他也会进行这个便利,好,为什么这是K1啊啊,对的啊,因为我这输的就是K1啊,K1好。这样子呢,我们就通过这个方式,我们又演示了什么呀,演示了一个结构比较复杂的麦的便利,这里面我们用到了双层for。比刚才这个结构比较简单的map呢,要想显得相对复杂一点,能看懂吧?还是比较简单哈,这个后边呢,我们在做一些比较复杂的业务逻辑的时候,我们就会用到这种for循环,双层for的循环来编辑一个map,好,那现在呢,我把这一段案例,把这个案例给同学们整理到我们的笔记里边去。
09:12
走一下。第一种。比较简单结构的map便利,对不对?那么简单的,其实就一一个foreign就行了。接着我们把它放一下。整理一下我们的笔记。第二组。第二组,第二组呢就是呃,还有一种就是结构比较复杂的,那从第27行开始截取。是这儿吧。OK。好,这里面呢,我们可以看到在便利的时候,我们用了双层for。可以了,把它放到这里面。整理下我们的笔记。好,这个地方稍微的往这边拉一点。好,这样就说完了啊,那么我们把这个说完过后呢,我们再看一个,就是怎么去统计,或者是得到一个map的长度,看这里。
10:05
我们想去拿到一个map的长度呢,可以用一个内置函数叫N,这个N在前面我们其实已经用过了,大家还记不记得我们在统计一个数组的长度时,其实我们就用的N,那么我们再去统计一个map有多少对k value的时候呢,也可以用这个。理解吧,他也可以用这个,那比如说前面的大家看这里,前面我们这讲了一个这样的一个cities。那么它这里面有几对KY6呢?其实你看就是三对,那如果说我我就想知道一个map里面有几对KY6,其实啊,同学们非常简单,我们用一个嫩就可以统计出来了。给大家简单的演示一下。大家用一下这个函数啊,走,我们说一下cities。
11:00
C有有多少对呢?有这么多对那。把CT写进去这么多,对。KY6。对啊,他是一对k value。他这统计出来就是能够拿到你这一共有三对,因为NUMBER1北京是一对嘛,NUMBER2天津又是一对,所以他这个地方呢,可以统计出你这个map里面有多少对,K86我们执行一下。看效果。跑起来。我们可以看到输出的时候呢,诶,你们可以看到C,他说有三对k value没问题吧,那当然了,我可以这样去统计,这个也是一样的道理了,如果我在这直接去统计map有多少对,呃,这个k value6,它就应该是返回两二个,我我返回两个,因为你有一个16的零一,还有一个16的零二。只是它的里面对应的这个值呢,是又是一个map而已,对不对。好,把这个地方的使用给大家整理到笔记里边去,这块相对比较简单哈,Map的长度整理一下。
12:06
Map的程度。好,我们整理到这块map的长度呢,我直接把这一个幻灯片的内容复制过来就行。使用的函数就是前面我们用来统计数组的长度一样的。保存一下。在有些时候我们会用到这里,好,同学们,那关于我们这个map的增删改查,我们就全部给大家介绍完毕了。尤其要注意在进行map变异的时候,我们要用for,而不能使用这个for循环了。因为什么原因,别人问你为什么,你告诉他,因为map这个K对不对,它不一定是数字,即使数,即使是数字也不一定是连续的数字,对不对?好,注意这个,注意这个细节啊好,那关于这个增删改查,我们就介绍到这里。
我来说两句