1.字典
为什么要使用字典呢?
我们生活当中常用的字典,比如:新华字典,它是用来查询的,我们想要某个字的详细信息,那我们通过这个字的关键信息,比如拼音、比划来进行查询即可,通过这些关键信息我们就可以找到我们想要的字了,同样的,在python当中,它同样是用来作为查询使用,并且它也有它自己的关键信息
- 问题:我们现在有两个列表,分别是name=["欢欢","乐乐","丽丽","天天"],四位同学,他们的成绩分别是grade=[89,56,78,34],两个列表的信息是对应的,比如欢欢的成绩就是89了,那么,我们如何在利用程序,给程序同学名字,并且让它打印出成绩?
grade=[89,56,78,34]
name=["欢欢","乐乐","丽丽","天天"]
#获得用户的输入
user_name=input("请输入名字:")
#获得用户输入名字的对应索引
user_index=name.index(user_name)
#打印对应成绩索引的结果
print(grade[user_index])
运行结果:
在这个程序当中,我们使用了index()
这个函数,这个函数的作用是,获得参数在列表当中的索引,比如name.index("你好")
就获得了“你好”这个元素在name
中的索引,我们发现,我们通过了一系列的动作,最终才达到了我想要的效果,其实还有更加快捷的方式,使用字典
定义字典
python当中的字典定义非常简单,字典是使用{}
包裹起来的元素的集合体,就像列表一样,也是一系列元素的集合体,在字典当中,这个元素是由键:值
这一对信息来组成的,键就相当与我们新华字典当中的关键进行,一般使用字符串的形式来命名,值就是这个关键信息能够查到的结果,接下来,利用上面这个问题来对字典进行定义
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
我们通过了一个Dict
这个变量,定义了一个字典,并且用{}
包裹起来,每个元素之间用“,”隔开,并且每个元素都是键:值
的方式来达到了一一对应
字典的使用
- 如何提取字典的值
提取字典的值我们可以通过以下语句
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
value=Dict["欢欢"]
print(value)
#运行结果
#89
通过字典名[键名]
这样的方式,我们获得了这个键所对应的数值
- 如何添加新的
键:值
呢?
可以直接利用字典名[新键名]=新数值
的方式进行添加
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
#添加新内容
Dict["明明"]=70
print(Dict) #打印结果
#运行结果:
#{'欢欢': 89, '乐乐': 56, '丽丽': 78, '天天': 34, '明明': 70}
我们可以看到,在末尾处新添加了我们的内容
- 如何修改里面的数值呢?
非常简单,与列表一样,使用字典名[键名]=新内容
的方式即可
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
#修改新内容
Dict["天天"]=100
print(Dict) #打印结果
#运行结果:
#{'欢欢': 89, '乐乐': 56, '丽丽': 78, '天天': 100}
2.提取关键值
当然,在刚才的所有使用中,我们都只是从字典中单一的取出了一个数据,那有没有办法一次性取出所有数据呢?肯定是有办法的,比如,利用for循环来进行,我们在以前的学习当中,利用for循环来遍历列表,那for循环如何遍历字典了呢?
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
for i in Dict:
print(i)
运行结果:
看到最后的运行结果,顺序和字典当中的顺序不一致,这是因为字典是一个无序的集合,而不是一个有序的集合,所以顺序和原来的不一致,但是我们发现,用for循环直接遍历,最后只打印出了键,而没有值,当然,我们可以采取其他的方式来全部打印,既然我们有了键,自然就可以打印出值了
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
for i in Dict:
print(i,":",Dict[i])
运行结果:
3.获取最高分
接下来,我们来学习一个新的算法,求取最大值算法,这个算法的思路非常简单,我们首先要一个变量用于存储最大值,假设叫做Max,最开始的时候,我们把Max设置为0,接下来就开始循环,取出第一位同学的成绩:89分,把89与Max做比较,如果发小89>Max,那我们就把Max的值设置为89,接下来是56,再接下来是78,依次取出进行对比,在循环结束之后,我们自然就能够得到一个最大值Max了
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
Max=0 #定义一个最大值
for i in Dict:
if Dict[i]>Max:
Max=Dict[i]
print(Max)
# 运行结果:
# 89
这样,我们就获得了最大值,但是我们发现虽然知道了最大值,但是不知道这个人是谁,因此我们在每次循环的过程当中,还可以把名字记录下来
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
Max=0 #定义一个最大值
name="" #记录名字
for i in Dict:
if Dict[i]>Max:
name=i
Max=Dict[i]
print("最高分是:",name,"ta的分数是:",Max)
# 运行结果:
# 最高分是: 欢欢 ta的分数是: 89
那有了最大值之后??我们如何计算最小值呢??
4.计算平均值
在已经做了这么多练习的情况下,我们已经能够很容易的写出计算平均值的代码了,我们只需要获得班级的总分和人数就可以了,人数可以使用我们以前学习的len()
函数获得
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
sum=0 #记录总分
for i in Dict:
sum+=Dict[i]
print("平均数为:",sum/len(Dict));
# 运行结果:
# 平均数为: 64.25
5.综合练习
1.尝试找出这个列表当中的最低分
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
Dict={"欢欢":89,"乐乐":56,"丽丽":78,"天天":34}
min=100 #定义一个最大值
name="" #记录名字
for i in Dict:
if Dict[i]<min:
name=i
min=Dict[i]
print("最低分是:",i,"ta的分数是:",min)
# 运行结果:
# 最低分是: 天天 ta的分数是: 34
2.计算以下班级的平均分
#定义函数
def avrage(Dict):
sum=0
for i in Dict:
sum+=Dict[i]
return sum/len(Dict)
Long={"四区":70,"爱儿":78,"丽丽":78,"每每":80}
he={"少少":70,"鱼鱼":67,"天天":86}
print("龙老师班平均成绩:",avrage(Long))
print("何老师班平均成绩:",avrage(he))