Python 3.8从零开始学
上QQ阅读APP看书,第一时间看更新

5.1 字典的使用

在Python中,字典是一种数据结构,这种结构的功能就如它的命名一样,可以像汉语字典一样使用。

在使用汉语字典时,想查找某个汉字时,可以从头到尾一页一页地查找这个汉字,也可以通过拼音索引或笔画索引快速找到这个汉字,在汉语字典中找拼音索引和笔画索引非常轻松简单。

Python对字典进行了构造,让我们使用时可以轻松查到某个特定的键(类似拼音或笔画索引),从而通过键找到对应的值(类似具体某个字)。

进入字典屋后,Python快乐学习班的同学以组为单位在字典屋的几张圆形桌上坐下,第一组的五位成员分别叫小萌、小智、小强、小张、小李,序号分别是0、1、2、3、4,为了便于接下来的演示,序号用三位数表示,不足三位前面补0,第一组五位同学的新序号分别表示为000、001、002、003、004。

现需要创建一个小型数据库,用于存储第一组五位同学的姓名和序号,下面我们先使用列表实现上述功能,并从列表中找到叫小智的同学的序号,示例如下:

>>> students=['小萌','小智','小强','小张','小李']
>>> numbers=['000','001','002','003','004']
>>> index_num=students.index("小智")
>>> print(f'小智在students中的索引下标是:{index_num}')
小智在students中的索引下标是:1
>>> xiaozhi_num=numbers[index_num]
>>> print(f'小智在numbers中的序号是:{xiaozhi_num}')
小智在numbers中的序号是:001

由输出结果可以看到,以上代码输出了我们想要的结果,但操作过程比较烦琐,若数据量较大时,操作起来会非常麻烦。

对于上面的示例,当学生数较多时,先要创建一个比较大的学生姓名列表,接着要创建一个和学生姓名列表有同样多元素的序号列表,一旦学生姓名列表或序号列表发生变更,就要将学号列表和学生姓名列表进行一一比对,以确保同步变更及变更的正确性。

对于上面的操作,Python中是否提供了更简单的实现方式?能否做到像使用index()方法一样,用类似index()的方法返回索引位置,通过索引位置直接返回值?请看下面的示例:

>>> print('小智的序号是:',numbers['小智'])
小智的学号是: 001

可见,在Python中这种操作是可以实现的,但前提是需要numbers是字典。