字典
一、实验目的
1、了解字典。
2、学会使用字典,调用字典中的元素。
3、学会修改字典中的元素、向字典中添加元素。
4、学会删除字典中的元素。
5、学会如何使用字典推导式。
二、实验内容
完成字典的创建、字典元素的访问、字典元素的添加和修改、字典元素的删除和字典推导式的编程。
三、实验原理及说明
1. 什么是字典
Python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。字典类型很像学生时代常用的新华字典。我们知道,通过新华字典中的音节表,可以快速找到想要查找的汉字。其中,字典里的音节表就相当于字典类型中的键,而键对应的汉字则相当于值。总的来说,字典类型所具有的主要特征下:

图1
Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。和列表、元组一样,字典也有它自己的类型。Python 中,字典的数据类型为 dict,通过 type() 函数即可查看。
2. Python创建字典
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号{} 中 ,格式如下所示:d = {key1 : value1, key2 : value2, key3 : value3 }。注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。

图2
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。一个简单的字典实例:tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}。

图3
3. 创建空字典
使用大括号 { } 创建空字典,也可以使用内建函数 dict() 创建字典。
4. 访问字典
列表和元组是通过下标来访问元素的,而字典不同,它通过键来访问对应的值。因为字典中的元素是无序的,每个元素的位置都不固定,所以字典也不能像列表和元组那样,采用切片的方式一次性访问多个元素。Python中访问字典元素的具体格式为:dictname[key]。其中,dictname 表示字典变量的名字,key 表示键名。注意,键必须是存在的,否则会抛出异常。Python 更推荐使用dict类型提供的get()方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。get() 方法的语法格式为:dictname.get(key[,default])。其中,dictname 表示字典变量的名字;key表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回None。注意:当键不存在时,get() 返回空值None,如果想明确地提示用户该键不存在,那么可以手动设置 get()的第二个参数。
5. 字典元素的添加和修改
为字典添加新的键值对很简单,直接给不存在的 key 赋值即可,具体语法格式如下:dictname[key] = value。其中dictname 表示字典名称;key 表示新的键;value表示新的值。
6. 字典修改键值对
Python字典中键(key)的名字不能被修改,我们只能修改值(value)。字典中各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,那么键所对应的值就会被新的值替换掉,以此达到修改元素值的目的。
7. 字典删除键值对
如果要删除字典中的键值对,还是可以使用del语句。
8. 字典推导式语法
语法一:key:字典中的key;value:字典中的value;dict.items():序列;
condition:条件表达式;key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理;value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理。
{key_exp:value_exp for key,value in dict.items() if condition}
语法二:key:字典中的key;value:字典中的value;dict.items():序列;condition:条件表达式;key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理;value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理;value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理。
{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}
四、实验设备
PC机、头歌实践教学平台。
五、实验方法
在头歌平台上进行编程,完成如下程序:
1、字典的创建,根据提示,在右侧编辑器补充代码。

图4
2、字典元素的访问,根据提示,在右侧编辑器补充代码。

图5
3、字典元素的添加和修改,根据提示,在右侧编辑器补充代码。

图6
4、字典元素的删除,根据提示,在右侧编辑器补充代码。

图7
5、字典推导式,根据提示,在右侧编辑器补充代码。

图8