从Scratch到Python 13 字典

您所在的位置:网站首页 python查找成绩用字典 从Scratch到Python 13 字典

从Scratch到Python 13 字典

2022-12-21 15:09| 来源: 网络整理| 查看: 265

我们已经知道,在处理具有多个元素的数据时,我们一般会使用列表。比如,用一个列表存储姓名,一个列表存储语文成绩,一个存储数学成绩,一个存储英语成绩。如果要检索某位同学的所有成绩,我们一般会先在“姓名”列表中查询这位同学的索引(也就是从0开始的序号),找到之后,根据同一索引号去其它三个列表中检索出他的成绩。不管是以前使用Scratch还是现在用Python,我们已经熟悉了这种处理方式。问题是,这种处理方式也有缺点: - 查询起来比较麻烦; - 四个列表必须顺序完全一致,只要错一个,所有人的成绩全乱了; - 如果你要增加一位同学,必须到四个列表中同时增加,删除也是如此

01 Scratch中的多列表.png

有没有更简单的方法处理?有,这就是Python为我们提供的字典。

1、字典定义

字典是包括0或多个键值对的集合,键值对之间没有顺序。“键”就是用来查询信息的元素,而“值”是你要检索的数据。在Python中以大括号“{ }”来包括键值对,键和值之间通过冒号连接,键值对之间使用逗号隔开。

注意,以后在谈到语法中的标点符号时,只要不特别提出,一般是指英文半角状态下的标点符号,而不是指汉字状态下的全角符号。

例如,我们可以用一个字典来存储每位同学的身高:

height = { '乐乐': 175, '欢欢':180, '格格':165,'图图':173 } print(height) print(type(height)) # 输出,即字典类型

这里我们用大括号建立了一个字典,这是创建字典的一种方法,大括号内可以包括0或多个键值对,如果为0是空字典。你也可以用dict()函数来创建字典,dict()函数的参数可以为空,也可以是表示两个元素对应关系的映射:

height =dict() print(height) # 创建了一个空字典 height1 = dict(乐乐=175,欢欢=180,格格=165,图图=173) print(height1)

这里还可以使用zip函数把两个列表“压缩”之后转换为字典:

list1 = [ '乐乐', '欢欢', '格格','图图' ] list2 = [175,180,165,173] height = dict(zip(list1, list2)) print(height) # 与前面的示例一样的字典

关于字典有几点注意事项: - 字典的“键”不能重复。如果一个键被赋值多次,会以最后一次赋值为准;比如你在创建时写了两个“乐乐”的身高,会以最后一个为准; - 字典可以嵌套其它数据类型。比如一个键值对应的可以是数字,也可以是一个列表,甚至可以是另一个字典; - 字典的“键”必须是不可变的,键可以是数字、字符串、元组等不可变的数据类型,但不能是列表等可变的数据类型;

二、字典的使用1、字典的字符索引

字典通过字符索引查找与特定键对应的值,比如:

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(height['乐乐']) # 打印出乐乐的身高1752、字典元素修改

字典可以通过对键信息赋值的方式实现增加和修改,如果键已经存在于字典中就是修改对应的键值,如果不存在会增加键值对。

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(height['乐乐']) # 打印出乐乐的身高175 height['乐乐'] =190 # 修改了乐乐的身高 height['天天'] = 184 # 增加了一个天天同学,身高184 print(height)3、删除字典元素

删除可以用del 字典名称[k] 的方式,其中k是要删除的键;还可以用字典的pop()方法,pop()方法会返回键对应的值,然后删除这个键值对。

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} del height['乐乐'] # 删除乐乐 print(height.pop('欢欢')) # 返回欢欢的身高,并删除欢欢 print(height)

你还可以用字典的clear()方法删除字典中所有键值对。

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} height.clear() print(height) # 打印出空字典{ }4、判断键是否在字典中

使用 k in 字典名称 这样的格式查询键是否在字典中,如果存在返回True,否则返回False:

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print('乐乐' in height) # 打印True print('小张' in height) # 打印False三、字典的遍历

字典的遍历和列表有所不同,这里我们专门讲解一下字典的各种遍历方法:

1、基本的for循环遍历height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} for i in height: print(i)

运行这段代码,你会发现它把乐乐、欢欢、格格、图图这四个键给输出了,但没有返回对应的身高。怎样返回键对应的值呢?可以用上面讲过的方法,用中括号来检索,也可以使用字典的get()方法:

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} for i in height: print(i, height.get(i)) # 打印出名字和身高2、遍历键

使用字典的keys()方法可以获取字典中所有键,它返回的是键构成的序列,所以我们可以遍历它:

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(height.keys()) for i in height.keys(): print(i) # 只打印出名字3、遍历值

使用字典的values()方法可以获取字典中所有值,它返回的是值构成的序列,所以我们也可以遍历它:

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(height.values()) for i in height.values(): print(i) # 只打印出身高4、同时遍历键和值

使用字典的items()方法可以获取所有的键值对信息,它返回的是键值对构成的序列,在for循环中我们可以分别用两个变量表示键和值,从而直接取出键和值信息:

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(height.items()) for i, j in height.items(): print(i, j) # 打印出名字和身高四、其它操作1、求字典长度

直接用len函数,和列表一样。

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(len(height)) # 打印出键值对数量42、随机取元素

可以使用popitem()从字典中随机最后一个键值对,以元组的形式返回,然后将其从字典中删除。

height = {'乐乐': 175, '欢欢': 180, '格格': 165, '图图': 173} print(height.popitem()) # 打印图图的名字和身高 print(height) # 打印结果中已经没有图图 注意,在Python3.7版本之前,popitem()会删除一个随机项而不是最后一项。五、课后作业

定义一个字典,保存5位同学乐乐、欢欢、格格、图图和天天的语文、英语、数学成绩,字典以姓名为键,每个键对应的是三门成绩组成的列表,如[99,98,97](成绩你可以随机输入)。请你使用循环遍历字典,并输出每位同学的成绩,要求按以下格式输出:

姓名 语文 数学 英语 总分 平均分 乐乐 99 98 97 294 98.0 ……

提示:使用循环遍历字典的键和值,对取出的值使用sum()函数进行求和,进而可以计算平均值。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3