开发者学堂课程【Python Web 开发基础:字典简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/600/detail/8718
字典简介
内容简介:
(一)字典是什么
(二)字典和序列(列表)
(三)字典的术语
(四)创建字典
(五)如何获取字典的值
(一)字典是什么
字典的英文名字简写叫 dict,字典并不是一种序列,它属于一种新的数据结构,称为映射(mapping)。
(二)字典和序列(列表)
字典的作用和列表类似,都是用来存储对象的容器,列表存储数据的性能很好,但是查询数据的性能很差。
在列表中可以存储十个数据甚至一万个数据,比如说存储十万个员工的数据信息,这些数据信息都是按照一定的固定的顺序在我们的序列中、列表中保存的。
当我想要在这一万个员工里找一个名为“白骨精”的员工信息时,有两种方式,
第一,我们明确知道“白骨精”的所有信息,这样我们就可以快速的把他找到;
第二,如果我们不知道的话我们就要把这个序列里面所有元素都遍历出来,一个一个检查。
所以如果序列里操作的数据很多,需要快速查询的时候,它的性能是很差的。
如果说序列像一本书,那么它是没有目录的,可以翻到任意一页,但是却不知道每一页的内容。
列表和序列是通过索引来查询的,而字典就不一样了。在字典中,每一个元素都有一个唯一的名字,通过这个唯一的名字,可以快速的查找到指定的元素。
字典的存储性能没有列表好,但是在查询元素时,字典的效率是非常快的。
(三)字典的术语
在字典中可以保存多个对象,每个对象都会有一个唯一的名字,这个唯一的名字,我们称其为键(key),这个对象我们称其为值(value),所以字典我们也称为键值对(key-value)结构,通过 key 可以快速的查询 value,每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)。
(四)创建字典
接下来我们进行一个创建,在 code 里面创建一个11.字典
使用大括号{}来创建字典,创建一个d={}大括号,打印一下,print(d,type(d)),这个 d 就是创建了一个空字典。
接下来创建一个包含有数据的字典,也就是往里面添加项,需要注意的是,字典里面有键值对结构,所以此时不能写d={1,2,3},语法应该是{key:value,key:value,key:value},就是给之前一个一个的元素起了一个名字,变成加上 key。
那么用 d={'name':'孙悟空'},就创建好了一个字典,这个字典里有一个项,项的 key 是 name,值(value)是孙悟空,可以继续写'age':18,'gender':男,并保存,现在我们字典里有三项,“name,age,gender”是key,“孙悟空,18,男”是 value。
字典的值(value)可以是任意对象,键(key)可以是任意的不可变对象(int,str,bool,tuple,…)但是一般我们都会使用 str。字典的键是不能重复的,如果出现重复的,后面的会替换掉前面的,执行看一下,前面的那个就没有了。
这样的格式看着是不太清楚的,我们可以把每一项单独放在一行,大括号中括号这样是没问题的,执行起来效果是一样的。
(五)如何获取字典的值
字典创建完了,那接下来,需要根据键来获取值,操作方式和列表一样,只不过列表用索引,这里用键。如果你想要知道名字的纸,就在这里输入 print(d['name']),保存就会出现“孙悟空”,同理输入'age'就会出现“18”,如果都想得到,就输入 print(d['name'],d['age'],d['gender']),执行之后,“孙悟空,18,男”就都出现了。
为什么说这个的查询性能好,因为索引的012345是没有意义的,但是键的名字是有意义的,索引就像一个页码,而“name”这种名字可以通过名字知道是什么意思,查询会比较快。
还有一种情况,如果使用了字典中不存在的键,比如 print(d['hello']),就会报错,出现 keyError:'hello'。