字典中的数据都是以键值对的形式存储,字典中的每个键都是唯一的,而每个键都会映射一个值。
你可以把字典想象成一个"图书馆”,图书馆中每一本图书都对应一个编号,你通过编号就能找到书。
正是因为键和值之间具有映射关系,你才能通过键提取到值。
运行下面的代码,在终端输入成绩表中的姓名,如:小白或小黑,看看代码运行的结果。
score_table = {'小白': 90, '小黑': 85} name = input('请输入姓名:') print(score_table[name]) 复制代码
是不是通过姓名就查到了成绩?我们来分析一下取值过程:
首先:我们创建了一个字典,存储两个学员的姓名和成绩。
然后:当在终端输入名字,例如:'小黑',那么'小黑'就被赋值给变量name,即name='小黑',此时,score_table[name]相当于score_table['小黑']。
最后,通过代码: print(score_table['小黑'),就打印出了你的成绩:88
这样,通过姓名(键)就获取到了成绩(值)。从字典中提取值的语法是这样的:
是不是觉得语法字典[键]很眼熟?和提取列表中元素的语法列表[索引]类似。
但如果你输入的姓名不在"成绩表"里,程序就会报错哦!
运行下面的代码,你可以任意输入一个姓名,如:小蓝,试一试。(报错点击【跳过本题】)
score_table = {'小白': 90, '小黑': 85} name = input('请输入姓名:') print(score_table[name]) 复制代码
如果键不在字典里,通过字典[键名]的方式来取值时,代码就会报错。
但我们不希望它报错,而是给出提示:“成绩表里没有这位同学的成绩”。
那这种时候我们就可以使用get()方法从字典中取值。运行下面代码,根据提示输入姓名,如:小蓝。
score_table = {'小白': 90, '小黑': 85} name = input('请输入姓名:') print(score_table.get(name)) 复制代码
点击右上角的【重做】按钮,输入不同姓名,例如:小白、小黑、小红等,观察通过get()方法从字典中取值的结果。
当我们使用get()方法来取值时,不管键是否在字典中,程序都不会报错。语法是这样的:
字典.get(键名),例如: score_table.get("小白")。
如果键在字典里: score_table.get("小白")就可以取出对应的值:90。
如果键不在字典: score_table.get("小红")运行的结果就会是None。
None是 Python 中一个特殊的值,代表“无"的意思。
我们还可以将字典.get(键名)和if 语句结合,来实现一些功能。
运行下面的代码,根据提示可以任意输入姓名,如:小红。
score_table = {'小白': 90, '小黑': 85} name = input('请输入姓名:') # 判断键是否在字典里 if score_table.get(name) is None: print('成绩表里没有这位同学的成绩') else: print('{}的成绩是{}'.format(name,score_table[name])) 复制代码
运行成功后,再点击【重做】按钮,输入小白试试。
我们来分析一下这段代码:
score_table = {'小白': 90, '小黑': 85} name = input('请输入姓名:') # 判断键是否在字典里 if score_table.get(name) is None: print('成绩表里没有这位同学的成绩') else: print('{}的成绩是{}'.format(name,score_table[name])) 复制代码
当你输入小红,这个键不在字典score_table 中,score_table.get("小红')运行的结果是: None;
那么: score_table.get(小红')== None条件成立,就执行if语句下的代码块:
print("'成绩表里没有这位同学的成绩")
当你输入小白时,'小白'在字典score_table中,所以score_table.get('小白')运行的结果是:90
那么score_table.get('小白')== None条件不成立,就执行else语句下的代码块:
print('{}的成绩是'.format(name, score_table.get(name))),打印出“小白的成绩是90"。
简单地说,当使用字典.get(键名)这种方法从字典中取值时:
若键在字典里面,直接提取键的值;
若键不在字典里,运行结果是None。
我们刚刚学了两种取值的方法,来归纳一下:
如何修改字典中的值?运行下面的代码,观察字典中的值的修改方法。
info = {'书名': '红高粱', '价格': 35.5, '销量排名': 50} # 修改键值对:将价格修改为32 info['价格'] = 32 # 打印info,检查一下是否修改成功啦! print(info) 复制代码
打印结果显示,价格数据已经从35.5改为32了。
字典中值的修改分两步:
第一步:根据键取出要改的值:info['价格'],第二步:赋上新值:info['价格']=32,值就修改成功啦。
学完了字典中值的提取和修改,如果要往字典里添加新的键值对,又应该怎么操作?
运行下面的代码,观察键值对增添的语法。
info = {'书名': '红高粱', '价格': 35.5, '销量排名': 50} # 添加键值对:作者是莫言 info['作者'] = '莫言' # 打印info,检查是否添加成功了 print(info) 复制代码
给字典里添加新的键值对,语法格式是:字典[新键名]=新值,如: info['作者']='吉他'。
有的时候,我们也可以先创建一个空字典,然后根据实际情况往里添加键值对。
那什么是空字典?
就是字典里面“空空如也”,没有键值对。
# 使用一对花括号创建一个空字典,赋值给变量score_table score_table = {} 复制代码
如何删除字典中的键值对?运行下面的代码,观察删除键值对的语法。
info = {'书名': '红高粱', '价格': 35.5, '销量排名': 50, '作者': '莫言'} # 删除键值对:作者是莫言 del info['作者'] # 打印info,检查是否删除成功了 print(info) 复制代码
删除字典中的键值对的语法: del字典[键名],del是“删除"的英文单词delete的缩写哦~