内容正文:
项目6 字典的操作及应用
/// ///
学校举办运动会,每当有一位运动员结束比赛时,就将他的姓名和成绩记录下来,最后获得一个完整的运动会成绩单。
任务11 运动会成绩单—字典的创建和基本操作
任务描述
任务分析
使用字典,将每位运动员的姓名和成绩作为一个键值对存入字典,通过使用字典的增、删、改、查功能,形成一个完整的运动会成绩单。
/// ///
知识准备
在Python中,字典用来存放具有映射关系的数据,如姓名和成绩、区号和省会名等。字典是Python中唯一的映射类型。字典中的对象以键值对的形式进行存储。键值对分为键(key)和值(value)两部分。定义字典时,要将键值对放入花括号“{}”中,键与值之间使用冒号分隔,键值对之间使用逗号分隔。
字典中可以存储任何对象。
>>> dict1 = {123:12,92.1:22,'猫':'动物'}
>>> print(dict1)
{123: 12, 92.1: 22, '猫': '动物'}
根据字典存储键值对的特性,我们可以通过键轻松地访问字典中对应的值。从这个特性可以看出字典是无序的,所以通过索引截取值的方法在字典中是不能实现的。
/// ///
>>> print(dict1[123])
12
>>> print(dict1[0])
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print(dict1[0])
KeyError: 0
>>> dict2 = {12:34,'a':'c','a':2}
>>> print(dict2)
{12:34, 'a':2}
在字典中,键必须是唯一的,如果键相同,那么随后输入的键值对将会替换原来的键值对。在字典中,值不要求唯一。例如,定义字典dict2时,有相同的键a,随后定义的键键a的值2替换了前面定义的键a的值c,所以输出了键a的值2。
/// ///
根据字典的键必须唯一的特性,将运动员的号码作为字典中每个对象的键,将运动员的成绩作为值:
任务实施
grade = {'S001':1.22,'S002':1.24, 'S003':1.19,'S004':1.31}
print(grade)
假设小李同学因使用兴奋剂导致成绩作废,需要将小李同学的成绩从字典中删除:
print('S003号运动员因使用兴奋剂,成绩作废')
del grade[‘S003’]
print(grade)
得到结果:
{'S001': 1.22, 'S002': 1.24, 'S003': 1.19, 'S004': 1.31}
/// ///
得到结果:
S003号运动员因使用兴奋剂,成绩作废
{'S001': 1.22, 'S002': 1.24, 'S004': 1.31}
将代码进行整合,具体代码(保存为名为dict.py的文件)如下:
grade = {'S001':1.22,'S002':1.24, 'S003':1.19,'S004':1.31}
print(grade)
print('S003号运动员因使用兴奋剂,成绩作废')
del grade['S003']
print(grade)
grade['S005'] = 1.39
print(grade)
使用方括号继续向成绩单中添加成绩:
grade[‘S005’] = 1.39
print(grade)
/// ///
运行代码并得出结果:
{'S001': 1.22, 'S002': 1.24, 'S003': 1.19, 'S004': 1.31}
S003号运动员因使用兴奋剂,成绩作废
{'S001': 1.22, 'S002': 1.24, 'S004': 1.31}
{'S001': 1.22, 'S002': 1.24, 'S004': 1.31, 'S005': 1.39}
任务完成。
/// ///
在本任务中学习了字典的定义和基本操作,了解了字典类型中存储的元素分为键和值两部分,了解了键和值具有映射关系,学会了字典的基本操作,掌握了使用键来访问、添加、修改字典中对应的值,了解了使用del等关键字删除或清空字典。
任务总结
任务检测
(1)简述生活中常见的映射关系。
(2)如果要将字典中的一个值删除,则可以使用什么方法?如果要清空一个字典,则应使用什么方法?
(3)请模仿本任务,利用字典生成一个班级成绩单。
任务拓展
请定义一个字典,尝试输出字典中的每个值。
/// ///
将任务11中的代码进行调整,在运动员成绩统计结束之