00:00
首先为大家介绍最常见的定义方式好不好,基本或者叫方法一吧。第一种定义字典的方法,第一种定义字典的方法是使用我们的格式来进行定义,什么格式呢?变量接收一下未来的结果,用我们的划括号啊,变量等于划括号是我们什么字典的标志性符号,所以用这个,然后呢,在这里边啊,每一个数据之间使用逗号分格,这个没有问题,和以前一样啊,但是一个数据由两部分组成,哪两部分呢?一部分叫做借。冒号后面跟着值,这是一份完整的数据,如果我们想在这个字典中加多个数据的话,那么在这里边用逗号分割每一个数据,然后再加一个建立对,再加一个建立对,再加一建立对儿,以此类推。啊,这就是我们如何声明字典的方式,那我们使用文件来操作一下,首先新建一个Python文件。卖下线扣的七下线零一文件,点击OK,来,我们来看一下字典的定义方法一啊。
01:10
字典的定义。好,第一种方法呢,非常简单,用格式来进行操作就可以了,比如说我们写上一个什么呢?我们写上一个学生的相关信息行不行,Student student等于我们要在这里干什么事呢?写上学生的名字和他对应的学号,那这个时候呢,我们一个数据就有两部分组成,是不是,一个是他的名字部分,一个是他的学号部分,比如说我们这里边有一个什么呢?有一个王成是不是,那么我们可以给他一个学号,比如他的学号是什么呢?啊123。123啊,12321吧,行不行,然后呢,还有别人,比如说还有这个。来逗号,比如说我们带一个刘萌行不行?好刘萌,然后呢,给他一个学号冒号啊,12367,然后逗号再给一个什么呢啊赵。
02:08
赵赵什么学起一个啊,叫赵赵赵钱行不行,赵钱好赵钱赵钱啊,然后呢,他的学学号咱也给他一个123啊。212322吧,行不行,然后呢,再写一个,比如说我们再写一个这个啊叫做叫做梁啊,叫做旭行不行,梁旭啊,它的编号呢,咱学号给他123啊四二行不行,好了,嗯,是不是不太对啊,哪个地方啊,后边这个不用加引号,给它一个普通的整形就可以好,这样一来我们其实就创建了一个字检类型,大家也看出来了,这个字检类型里边呢,有个特征,什么特征呢?每一个数据有两部分组成,有两部分组成,然后呢,前面冒号的前面是我们这个数据的键啊,叫做键,后边是它的值,为了在字典中找对应的值,就需要用这个键来进行操作,不过操作我们一会再讲好不好,我们来看一下这是否是一个字典类型呢?在里边进行一个打印操作啊,Print套上括号,我们在里边输出啊student,然后呢,查看一下它的类型,Type,套上括号students。
03:20
Students,好,我们右键运行一遍,看我们是否得到了一个自检类型,来大家看前面的数据,后边是不是自检类型啊,所以第一种方式非常的简单,当然也是最常用的方式啊,最常用的方式其实我们推荐大家就用这种啊,常见方式啊,那还有别的方式吗?有,来我们看一下第二种。创建我们字典的方法,第二种方法则是使用字典的函数来进行创建啊,字典的函数怎么创建呢?大家来看,我来操作啊,我们需要变量来接收一下未来的字典啊,用到DCT这个函数,我们DCT它是类型转换的,对不对?同时它也可以作为创建字典的函数,那在这里边该怎么创建呢?我们字典的每一个数据都由介和值两部分组成,那么在创建的时候呢?以什么形式呢?关键字参数的方式往里传递就可以了,比如说我们这里面写什么呢?叫做行参啊,写的格式是这样的啊,行参等于值,逗号行参等于值,然后依次往后类推,未来这里边的行参会成为字典中的见。
04:34
然后呢,未来的这里面的值会成为我们未来字典当中的值,好,我们来试验一下,看这种方式是否可以使用呢?来第二种方式啊,来第二种方式,我们接下来写student等于D逃生坡。在这里边需要注意啊,我们写的是行参,所以行参的是一个变量名,你是不可以什么呢,直接使用数字来当我们的行参的啊,就是这里边儿你要写行参嘛,是不是我们还要写学号,你可以写上王成。
05:06
啊,它的编号是幺二,写错了啊,12321没有问题,这样写,但是注意王成千万不要加引号,千万不要加,为什么呢?因为你加了引号,它就成字符串了,而变量大家也知道这是个行参嘛,行参是一个变量,哎,是不是变量名哎,所以它是不能够加引号的,当然没有办法,我们并不推荐大家使用中文啊,但是这里边使的确实中文,那你也没有办法,只能这么写,如果需要再设置更多的数据的话,比如说我要设置流氓,那就把流氓当做行参名称,把它的学号当做默认值传递过来,然后呢,我们还有其他的数据,比如说再写一个照钱吧,行不行,我们把照钱当做行参名称,把它的编号当做值或者叫默认值传递进来,这个时候呢,我们也可以得到一个字点的数据类型,请大家来看一下是否正确呢?Students逗号keep考上括号,写上我们的students。
06:01
来,我们右键运行程序,大家来看一下我们这次创建的是不是也是一个字典类型,是不是就这三个,看到没有王成、刘萌和赵琴,但是他也是字典类型,所以我们创建字典类型不单单可以使用格式,也可以使用它的函数创建,除此之外,我们依然有别的方式来进行字典的创建,比如说诶在这里边我们可以采用第三种方式的方法来创建字典,这种方法呢,说是创建字典可能不太合适啊,因为它更多的说法应该叫做数据类型转换,数据类型转换,因为大家都知道一个特征,什么特征呢?这个D吧,它有一个转换功能,对不对,能够把其他的一个叫做嵌套类型的列表啊,或者元组啊,转换成我们的这个字典,所以确实可以这么做,那这样的话,我们要求的操作一般是这样的啊,我预先呢。已经存在一个两个列表吧,预呃一个列表,好吧,预先存在一个列表啊来第三种方式,预先存在一个列表叫做什么呢?SK行不行,等于中括号里面放上什么呢?放上嵌套列表格式,这里边再放数据,每一个数据又有两部分组成哪两部分呢?就是我们的刚刚写的,比如说王成。
07:17
是我们内部啊,第一层啊,第一个数据。嵌套列表内层的第一个数据编号是它的。第二个数据,然后以此类推,每一个数据都有两部分组成,比如说还有我们的刘萌对不对,我们刘萌是列表中的第一个数据,然后呢,它的编号是第二个数据,12367啊,然后呢,接着来写,我们还有什么照前,是不是这种方式也可以写啊照前。好,然后呢,逗号它的编号是12322,还有一个是梁旭,是不是啊旭这名都是编的啊,来中国我们写上梁旭。好,梁旭,然后逗号它的编号是多少呢?是12342啊12342好搞定,那这个时候请注意它是STU,它肯定不是一个自检类型吧,这是什么类型啊,诶大家其实也能知道,这明显是一个列表类型,只不过是一个嵌套列表,对不对,所以STU,那么大家可以看一下,现在我们得到的是一个叫做,哎,写错了吧,那啊,少了个逗号,少了个逗号啊,这是一个嵌套列表,但是类型不变啊,它依然是个列表类型是不是。
08:27
是不是一个列表类型啊,Class list吗?那如果说我想得到一个字典怎么办呢?诶大家也知道数据流转换D是不是可以做这个操作呀,没错,我们这里可以使用DCT进行类型转换啊,STT啊,Dt students等于D套上框,可以把这个嵌套的列表放进来,当然这个列表有要求啊,就是第二层里边必须只有两个数据的,因为它未来一个要当建一个当当值嘛,是不是?用这种方式我们也可以得到一个列表,不过这个应该叫不叫做创建列表,而叫做什么呀?将其他数据类型转啊不不不叫做创建字典,而应该叫做将其他数据类型转化为字典才对,对不对,好了,来右键运行一遍,大家来看。
09:13
你看是不是也是一个什么呀,字典啊,当类型没给大家打印,我给大家打印一下行不行,Tap套上括号,我们写上我们的s to students来右键运行一遍。好了,是不是也是一个自然运行好了,第三种方式完了之后呢,我们还有一种方式啊,这种方式给大家记录一下变量啊,等于DCT啊,然后呢,套上括号啊,然后这里放一个注意是符合条件的嵌套列表啊,条件的嵌套列表才可以啊,什么叫符合条件的就是这个列表,这个这个什么这个这个里边必须是什么呀,必须嵌套列表,而且第二层里边必须只有两个数据啊,就跟我们这个一样啊。但是你写元组也是可以的,嵌套容器吧,咱写嵌套容器啊,但是这里边这里边需要注意啊,容器必须是我们的列表或者元组啊,或者元组,而不可以干什么事呢?不可以写集合的这个为什么我们一会再说好吧,还有最后一种方式啊,还有一种方式,这种方式呢,大家比较少见啊,来最后一种方式怎么办呢?它是一种组合方式,来方法四啊方法四这是一种组合方式,假如说我们现在有什么呢?有一个把所有的什么呢?所有名称组成的一个列表和所有学号组成的一个列表放在你的面前,我需要大家给我做出一个字典来,能懂什么意思吗?比如说这有一个名称的叫name的一个列表啊,中国号里边写上我们刚刚这四个人啊,什么王成啊,刘萌啊,咱给他放进来好不好?
10:48
好,这是第一个数据,懂了第二个数据,这种方式大家应该比较少见啊,但是确实是可以这么用啊,所以给大家普及一下,你了解一下,知道这种方式就可以了啊,自己写的话,只在特殊要求下会出现这种要求啊,特殊情况下会出现这种要求啊啊梁旭拿过来。
11:06
OK,我们是不是有一个名字的列表了,对不对,同时还有一个什么呢?还有一个学号的列表啊,学号的列表no,有一个学号列表,学号列表放在他们分别的编号,比如说我们在这里边啊,第一个编号是12321。第二个编号是12367。然后第三个编号是12322。这编号我也是随便写的啊,然后这个编号是12342,好了,大家一看,上面有四个名称,下面有四个编号,对不对?那我可不可以把这种格式的数据也组合成一个列表呢?可以的,它用到的格式是什么呢?比较复杂一点,用到的ED函数变量,但是还需要借助另外一个函数,什么函数呢?Zip它这样写的,DD套上括号里边写上Z,括号里写两部分。Zip的左侧写键的容器,后边值的容器啊,就这个效果,也就说哦,原来zip可以把键和值组合到一起,然后再组合成字典,对不对,这种方式也是可以使用的,大家来看啊,我们在里面stu students。
12:18
等于D套上括号,然后呢,写上我们的zip函数啊,Zip函数可以把你两个列表组合成一个类似于字典的格式,然后经过再转换就可以得到字典,然后写上内逗号number,这种方式呢,也是可以得到我们的浮点的来。类型type,套上括号,Students,好,我们来运行一遍,看一下是否可以得到。你看是不是又得到了一个什么呀,列这个就叫自检类型对不对,但需要注意啊,你上面这个数量和下面这个数量必须保证一致,也就是上面四个,下面的四,你不能说下面多一个我少一个,那就会报错了啊,就是必须保证它俩的数量是一致的啊,哎,不报错啊,多了这就不要了啊,可以的啊好,这个大家需要注意啊,究保持一致,但是这种方式多见于什么呢?多见于我有了一个有序的。
13:14
列表,再有一个有序的列表,两个列表进行合并,这里边的容器千万不要使用集合,明白啊,千万不要使用集合,也不要使用字典,就是列表和元组啊,它这个容器也是列表和元组的很多说为什么呀,很简单呀,你别忘了你未来要做一个一一对应的操作,是不是它俩对应,它俩对应它俩对应,它俩对应你必须有序啊,那有顺序的话,不是就是列表和元组啊,你字典和集合是无序的,所以不能往里放,所以这就是我们用字典,不不用这个两个列表来创建一个字典的方式,这样一来的话,关于字典的创建就为大家介绍完了,看懂了吗?好,关于字典创建完了之后,我们下面该进行一下它的相关操作了啊,所以字典的操作是下面要讲的内容,那字典的操作就是吧,咱们访问字典啊,删除字典里边的值啊,获取字典里边的值啊,这样的操作啊,那么先来看一下如何访问字典中的值。
14:14
如何访问字典中的值?好,那我们来看一下访问字典中的值,其实并不复杂,把上面这个注释一下啊,我们接下来给大家写。好,写上什么东西呢?访问操作啊,或者写上字典操作吧,字典操作先来访问,我们需要先定义一个列表EST,等于我们这次写一个水浒传好不好,因为他们刚好有什么,刚好有这个号嘛,是不是比如说我们的这个呃宋江啊,或者叫呼宝义啊,呼宝义啊写错了啊,呼是呼叫的呼。Who?保护的宝,义气的义啊,呼保义。啊,是宋江对不对啊,当然也叫及时雨啊,也叫及时雨啊,宋江它有两个宋江,宋江好,然后呢,接着来啊,在这里边接着写,还有我们的花和尚。
15:07
这个大家比较熟,是不是鲁智深啊,好,冒号对应的值是鲁。智深,然后逗号这里边接下来写,比如说还有什么入云龙,是不是入云龙,我们写下冒号,他的值是公孙胜啊,好,然后再加着写,比如说还有大刀。大刀,嗯,是我们的关圣。好,关胜。还有我们都什么谷上枣,是不是时迁鼓上枣?啊,时间。时间。好了,就这些吧,咱就不写太多了好不好,够咱用就行了,在这里边需要注意啊,创建字典的时候,它的键必须是不可改变的数据类型,这句话我给大家补充一下行不行啊,在里边需要注意啊,字典的键。
16:00
不可以改变的类型很多,是啥叫不可改变的类型啊,你就简单的说就是字符串啊,然后呢,呃,整形啊,浮点型啊,这些东西不尔值啊,都不可以改,但是你要写一个列表可以改吧,是不是啊,你要写一个集合可以改吧,是不是你要写一个什么呀,字典也可以改,是不是这些都不能用啊,所以常用的其实就是什么呀,常用的就是常用的就是这么几个字符串,一个写错了字符串,然后呢,整形。浮点型啊,咱们布尔值也可以用,我们一般不用啊,因为布尔值写的话就俩没有意义啊,好了,我们在这里边接下来看如何访问这里边的某个数据呢?比如说我希望找到公孙胜,那么我只需要知道它的键就可以找到这个数据,来在这里边我们进行一个操作啊,来给大家操作一下访问操作。然后呢,在这里边往后拉一下回个车啊。好,换到下一行,我们访问的时候,Print套上括号,如果你直接写heroes的话,它肯定把整个字典是不是都给你打印出来了,但这不是我们要的,整个字典是不是都出来,我只要其中的某一个数据怎么办呢?哎,跟列表一样,加中括号,但是不一样的是中括号里边放什么东西啊?我们列表里边是不是有编号,所以你可以放编号,但是字典是无序数据,所以它没有编号,没有编号不要紧,我们找数据的时候,可以通过它的键来找到它的值,也就说你只要写出键,它就会自动帮你找到对应的值是多少。比如说我写入玉龙,那么他给我打印的就是公孙胜,看见没有,我要找什么呢?我要找这个鲁智深啊,鲁智深,我就在里边写他的键,叫花和尚就可以了。
17:31
Heros啊S,然后呢,中括号这里面写上花和尚啊花和尚。它就会自动帮我们找到对应的值。鲁智深。是储知识,嗯,这样的话,字典的访问操作就可以完成了,非常简单对不对,所以它的访问操作其实就是字典变量啊,中括号后面跟上对应的借即可啊借即可。键是什么东西呢?用来区分字典值的一个标志,所以这个大家要了解一下啊。
18:04
它是用于区分字点中值的标识值的,标识和索引是一个意思啊,和索引一个一个意思啊,索引一个作用,大家都知道我们在学列表的时候,或者元组的时候,是不是有一个什么啊,人家有索引编号啊,用来区分里边的数据对不对,但是我们这个字典它因为没有顺序啊,所以没有索引,但是我可以加入一个键来进行操作,好了,那访问字典之完之后,我们看一下往字典中添加值该如何操作呢?来添加数据,首先我们先打印出原有字典health。来,Hero。好,打印完了之后,我想往里加,该怎么加呢?很简单,就使用变量重新赋值的格式就可以了,在这里边写上heroes heroes中括号,你想加谁,你就把它写上去个,比如说我们写上一个叫做浪里白条,是不是浪,这里面依然写未来要增加数据的,见啊,浪里白条。
19:04
来是谁呢?写上它的值。张顺。好保存一下,好搞定,然后打再次打印我们的heroes来,我们就可以发现浪里白套章税已经被我们加到了字典当中,大家看这是原来的字典,这是新的字典,是不是加进去了,但是注意啊,不是加到最后,他加到哪不一定的,它顺序是随机的,只不过给你打印的时候可能按照我们写的顺序给你出来了,在内存中它的顺序是随机的,不是不是说一定加到最后的,好吧,好了,添加就那么简单啊,所以加的话还比较简单,是不是比最起码比列表强,列表它没法直接加我可以啊,所以添加自检增值。来给字典添加值,添加啊值。那我们在这里边直接是字典,直接就是字典中括号里边写上,呃,我们的叫做新的进是不是,然后直接等于一个新的值就可以了。
20:03
所以千万注意点啊,这里边注意点,你这个键千万不能是存在的很,都是存在的怎么办呢?如果你在这里边又写了一个花和尚的话,那大家已经知道是不是已经有花和尚了,它会发生什么效果呢?大家应该想到了,它会覆盖掉原来的鲁智深,你看花和尚变成樟树了是不是?所以这是我们下面要讲的另外一个东西,什么东西呢?修改字典中的数据啊,修改字典中的值,好,来看一下修改字典中的值。那大家已经知道是不是就是字典中括号找上对应的键,然后等于一个心值是不是就可以了,嗯,心值就可以了,这个我们最好写的已存在的解行不行。以存在啊的键啊,等于性质,这就实现了修改操作,其实我就说嘛,当变量重新复制就可以了,所以大家看好了,我们写上一个修改操作,比如说咱把这个嗯呃入云龙改成呃嗯,没法改啊,这是大刀关胜改改改行不行,咱改一下大刀行不行,那我们在里边先打印一次原有的字典。
21:15
然后呢,修改一下大刀对应的值,那在这里边我们直接写上啊tas中括号啊,找到它的键键叫大刀啊来大刀很多时候能改键吗?键不能改哈,大刀等于直,比如说能显示他的祖宗啊关于关于OK,这个时候再次打印我们的heroes heroos,我们就可以在这里字典中发现大刀已经不是关羽不怪事了,而变成了啊关羽看见了吗?啊当然后边你别着急啊,后面加的是因为我们上面没注释对不对?如果你只想看一下我们这个基本操作,你可以把上面这个添加和访问先注释一下啊,就是你自己测试的时候需要注意上面代码对下面的一个影响,当你要是呃自己能。走的过来的话,就是不会混乱的话,那倒也无所谓,你看是不是大呃,原来的这个大刀关胜变成大刀关羽啊是不是?嗯,这就修改要删除怎么办呢?删除操作倒是和其他的操作都一样,直接使用Del即可以进行啊,所以我们要讲的是删除字典中的值啊。
22:17
删除字典中的值。OK,自检作用值直接Del,然后字典,然后写上对应的键就可以了,就可以进行删除,来我们试验一下是否可以做到呢?来把修改这个我们也注释一下。我们来进行删除它,首先先写上注释啊,删除头来第一啊,先打印一下原有字典啊,让大家看见else。好,来右键运行一遍。你看是不是原有的,我现在把大刀关胜删掉,行不行就删掉关胜啊,那我们在里边直接DLTS中括号写上它对应的键大刀。大刀好搞定,然后呢,在这里边再次打印我们的变量girl好来右键运行一遍,你就会发现大刀惯性是不是已经被我删掉了,看见没有是不是删掉了,所以删除操作也是非常简单的,好了,那这样的话,关于我们的字典的基本操作就为大家介绍完了,介绍完基本操作之后,为大家介绍一下什么呢?相关的序列操作啊。
23:24
序列操作。其实就是我们之前说的什么加法呀,乘法索引啊,是不是不好意思一个等不了啊,因为什么呢?因为字典数据类型啊类型。没有索引,没有索引,索引是无法使用分片的啊,无法无法使用分片操作,分片你就不要想了,索引也没办法,因为索引也需要编号是不是,所以无法使用分片和索引的操作,而且不单单如此,字典类型没有乘法与加法运算。
24:00
字典类型没有乘法与加法运算啊,就不是你不说我字典乘以几份是不是,然后这个这个呃,字典啊,再加一个字典是不是很多字,很多学弟说那字典是不是不能和字典连接啊,那倒不是啊,我们确实可以连接,可以有别的操作,但是你不能直接使用加法进行操作,明白吗?好了,来我们接着来看啊。那下面我们给大家讲的是序列操作,能用的其实也就是一个成员检测啊,成员检测因为大家也知道容器类数据是不是都能用成员检测呀,没错,看一看呀,所以能够用的是in和not in in和not in,那么in和not in在进行自检检测的时候会有什么不一样的地方吗?有,我们之前也给大家说过了啊,它检测的时候检测的是近,而是非是值,所以来看一下成员检测操作啊。成员检测操作,那在这里边我们再次写一个啊,再次写一个he,然后把上面这个字典拿过来用一下啊。咱也不用太多了,就拿三个吧,行不行?好把这三个数据拿过来,然后拿过来之后呢,我们来进行检测,先来看一下in的检测操作,那在这里边我们可以写result党域,你要查谁呢?比如说我要查宋江啊,宋江写错了,宋不对啊。
25:16
宋江啊,我说他in我们的shes。对吗?不好意思,运算结果一定是false啊,运算结果一定是false,都是这边有中间啊,没有用的,是不是false啊,因为大家之前了解过啊,成员检测在这里边,字典检测的是见而非值啊,这个千万注意,字典检测的是见而非它的值,所以你检测宋江肯定查不出来,但你要查互报E,它就是真的了,来右键运行一遍,你会发现最终结果为to是不是?所以这个需要注意一下,当然not in也遵循相同的操作,Not体in啊。那么在这里边result,我说什么呢?我说这个花和尚not in,那就不对,比如说我们写花和尚,我说花和尚它不在字典中啊,Not in,我们的这个hero,那么运算结果一定为false。
26:11
因为花和尚真的是他的剑,而且还存在是不是,所以就是放了,来看一下是不是就放了啊,想回处很简单,你随便蒙一个不存在的,比如说呃,老和尚,老和尚是不存在于我们这个叫做字典当中的建中的,是不是,所以就是这就处了。好了,那这样一来的话,关于我们字典的一些小的操作就为大家介绍完了,下一节我们将为大家带来字典的其他操作,包括字典的便利以及字典的相关函数。好了,感谢大家,我们到此结束,我们下一节再见。
我来说两句