Python学习6 字典基础知识和常用函数

字典概念

字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value
在这里插入图片描述
语法:
在这里插入图片描述
注意事项:
键值对,类似Java的Set
在这里插入图片描述
题目:
字典的键不能改变,所以可以使用元组当键值,而不能使用列表当键值
在这里插入图片描述

增加字典

在这里插入图片描述

删除字典

del与popitem一样,删除一个元素,返回被删除这个元素的 key-value
在这里插入图片描述

修改字典

在这里插入图片描述

查找字典

直接查找
在这里插入图片描述
使用get()函数查找字典
在这里插入图片描述
题目:
get(“a”,“b”):a是键,b是值;如果想要查找的键所对应的值不存在,则输出字典中键所对应的值
在这里插入图片描述

合并两个字典-update()函数

在这里插入图片描述

遍历字典

1.for循环
在这里插入图片描述
2.keys()遍历
在这里插入图片描述
3.values()遍历
在这里插入图片描述
4.items()遍历
在这里插入图片描述
在这里插入图片描述

遍历字典-sorted()和Set()函数

按顺序遍历所有键
要以特定顺序返回元素,我们可以使用 sorted() 函数来获得按特定顺序排列的键列表副本。

sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的list,而不是在原来的基础上进行的操作。

for name in sorted(dict2.keys()):print(name.title())

当值中含有很多重复值时,为了剔除重复项,可使用集合 set()

for name in set(dict2.values()):print(name.title())

字典推导式

在这里插入图片描述

字典嵌套

将字典储存在列表中,或者将列表储存在字典中,称为嵌套。
字典列表

dict1 = {'物理':90,'化学':85,'生物':88}
dict2 = {'物理':95,'化学':88,'生物':70}
dict3 = {'物理':80,'化学':90,'生物':75}
dict4 = [dict1,dict2,dict3]
for a in dict4:print(a)

字典嵌套列表

dict5 = {'color':'blue','type':['A','B','C']
}

字典嵌套字典

dict6 = {'a':{'name':'Tom','age':6}'b':{'name':'Marry','age':10}
}

练习1-字典列表:用户输入姓名

# 让用户输入姓名,
# 如果该姓名在 persons 中存在,提示用户;
# 若不存在,继续输入年龄到列表中。
persons = [{'name': 'Tom', 'age': 18},{'name': 'lisa', 'age': 15},{'name': 'Sufv', 'age': 20},{'name': 'Linda', 'age': 13}
]
print(persons)
flag = True
while flag:name = input("请输入姓名")for i in persons:if name == i["name"]:print("该姓名在 persons 中存在,结束循环")flag = Falsebreakelse:age = int(input("请输入年龄"))check = {}check[name] = agepersons.append(check)break
print(persons)

练习3-字典列表输出最高分和最低分对应的学生姓名

students = [{'name': '张三', 'age': 18, 'score': 88, 'tel': '1323454658', 'gender': '男'},{'name': '李四', 'age': 19, 'score': 89, 'tel': '1111454656', 'gender': '女'},{'name': 'jack', 'age': 38, 'score': 30, 'tel': '12142344562', 'gender': '不明'},{'name': '小白', 'age': 26, 'score': 35, 'tel': '12142345658', 'gender': '女'},{'name': '可文', 'age': 20, 'score': 90, 'tel': '1903334258', 'gender': '男'},{'name': 'mike', 'age': 14, 'score': 100, 'tel': '1345555678', 'gender': '女'},
]
max=students[0]["score"]
min=students[0]["score"]
maxStudent=''
minStudent=''for i in students:max = max if max > i["score"] else i['score']min = min if min < i["score"] else i['score']for j in range(len(students)):if max == students[j]["score"]:maxStudent = students[j]["name"]if min == students[j]["score"]:minStudent = students[j]["name"]print(max,min,maxStudent,minStudent,sep=' ')

综合练习-字典列表:学生信息输出

# 4
# 声明一个列表,列表中包含6位学生的信息,
# 每位学生的信息包括:
# 姓名,年龄,分数(单科),电话,性别(男,女,不明)
students = [{'name': '张三', 'age': 18, 'score': 88, 'tel': '1323454658', 'gender': '男'},{'name': '李四', 'age': 19, 'score': 89, 'tel': '1111454656', 'gender': '女'},{'name': 'jack', 'age': 38, 'score': 30, 'tel': '12142344562', 'gender': '不明'},{'name': '小白', 'age': 26, 'score': 35, 'tel': '12142345658', 'gender': '女'},{'name': '可文', 'age': 20, 'score': 90, 'tel': '1903334258', 'gender': '男'},{'name': 'mike', 'age': 14, 'score': 100, 'tel': '1345555678', 'gender': '女'},
]
#(1)统计不及格学生个数;
count=0
for i in students:if i["score"]<60:count+=1
print("不及格学生人数:"+str(count))# (2)打印不及格学生姓名和对应成绩;
count=0
list=[]
for i in students:if i["score"]<60:list.append(i["name"]+"的成绩为"+str(i["score"]))
print("不及格学生信息:")
print(list)# (3)统计未成年学生个数;
count=0
for i in students:if i["age"]<18:count+=1
print("未成年学生人数:"+str(count))# (4)打印手机尾号是8的学生名字;
print('手机尾号是8的学生名字:')
for i in students:if i["tel"].endswith('8')==True:print(i["name"])# (5)打印最高分和对应的学生的名字;
max=students[0]["score"]
maxStudent=''
for i in students:max = max if max > i["score"] else i['score']
for j in range(len(students)):if max == students[j]["score"]:maxStudent = students[j]["name"]print("最高分:"+str(max)+"对应的学生姓名为:",maxStudent)# #(6)删除性别不明的所有学生;
j=0
print(students)
for i in students:if i["gender"]=='不明':students.pop(j)j += 1
print(students)# (7)将列表按学生成绩从大到小排序。
#冒泡排序
print(students)
for i in range(len(students) - 1):for j in range(len(students) - 1 - i):if students[j]["age"] < students[j+1]["age"]:temp = students[j]students[j] = students[j + 1]students[j + 1] = tempprint(students)

实验–评委分数


# (1) 输入评委人数;
number=int(input('the number of judges:'))
while number<3:print('number is not quality')number=int(input('the number of judges:'))
# (2) 输入每个评委打分,以字典的形式录入(分数在0-100之间);
score={}
key=97
for i in range(number):s=int(input('the score of the judge:'))while s<0 or s>100:print('score is not quality')s = int(input('the score of the judge:'))score[chr(key + i)]=s
print(score)
# (3) 删除最高分和最低分;
max_score=max(score.items(),key=lambda x:x[1])
min_score=min(score.items(),key=lambda x:x[1])
# print(max_score,min_score,sep='\n')score.pop(max_score[0])
score.pop(min_score[0])
print(score)
# (4) 计算剩余打分的平均分。
from functools import reduce
list1=list(score.values())
average=reduce(lambda x,y:x+y,list1)
print("the average score="+str(average/len(list1)))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP协议

创建项目 新建项目 Java Enterprise JDK1.8 Web Application Tomcat JAVA 默认 过程需要联网 Maven的配置 IDEA内置Maven 修改本地仓库位置&#xff0c;因为以后会越来越大 替换配置文件&#xff1a; 阿里云镜像下载 Servlet基础 1.动态Web资源开发 2.Servlet是使用J…

STL源码剖析 配接器

配接器(adapters)在 STL组件的灵活组合运用功能上&#xff0c;扮演着轴承、转换器的角色。Adapter这个概念&#xff0c;事实上是一种设计模式(design pattern)。 Design Patterns)) 一书提到23个最普及的设计模式&#xff0c;其中对odopter样式的定义如下&#xff1a;将 一个cl…

中科大 计算机网络3 网络边缘Edge

网络结构 边缘系统 网络核心 接入网 方块&#xff1a;边缘系统(主机) 圆的&#xff1a;网络核心&#xff0c;数据交换作用 连接边缘系统和网络核心的叫做接入网&#xff08;access&#xff09;&#xff0c;把边缘的主机接入到网络核心&#xff08;所以是分布式的&#xff09; …

STL源码剖析 入门开始 STL概论与版本简介

源代码之中时而会出现一些全局函数调用操作&#xff0c;尤其是定义于<stl_construct.h> 之中用于对象构造与析构的基本函数&#xff0c;以及定义于<stl_uninitialized.h>之 中 用 于 内 存 管 理 的 基 本 函 数 &#xff0c; 以及定义于<stl_algobase.h>之中…

中科大 计算机网络4 网络核心Core 分组交换 电路交换

网络核心 电路交换&#xff08;线路交换&#xff09;&#xff1a;打电话之前&#xff0c;先建立一条链路&#xff08;物理&#xff09; 分组交换&#xff1a;存储转发的方式 电路交换&#xff08;线路交换&#xff09; 通过信令&#xff08;控制信息&#xff0c;如&#xf…

STL 源码剖析 空间配置器

以STL的运用角度而言&#xff0c;空间配置器是最不需要介绍的东西&#xff0c;它总是隐藏在一切组件&#xff08;更具体地说是指容器&#xff0c;container&#xff09; 的背后但是STL的操作对象都存放在容器的内部&#xff0c;容器离不开内存空间的分配为什么不说allocator是内…

中科大 计算机网络7 分组延迟 分组丢失 吞吐量

分组丢失和延迟的原因 队列太长没有意义&#xff0c;用户需求 排队&#xff1a;输出能力<到来的分组&#xff0c;需要等待 四种分组延迟 节点处理延迟&#xff1a;确定的 排队延迟&#xff1a;随机&#xff0c;取决于网络情况 一个比特的传输时间&#xff1a; R1Mbps …

STL源码剖析 迭代器iterator的概念 和 traits编程技法

iterator模式定义如下&#xff1a;提供一种方法&#xff0c;使之能够依序巡访某个 聚合物(容器)所含的各个元素&#xff0c;而又无需暴露该聚合物的内部表述方式.STL的中心思想在于&#xff1a;将数据容器(containers)和算法(algorithms)分开&#xff0c;彼此独立设计&#xff…

中科大 计算机网络11 应用层原理

应用层大纲 传输层向应用层提供的服务&#xff0c;形式是Socket API&#xff08;原语&#xff09; 一些网络应用的例子 互联网层次中&#xff0c;应用层协议最多 流媒体应用&#xff1a;直播 网络核心最高的层次就是网络层 应用进程通信方式 C/S&#xff1a; 客户端&…

STL源码剖析 序列式容器 vector 和 ilist

Vector list 单向链表 ilistlist的删除操作&#xff0c;也只有指向被删除元素的迭代器会失效&#xff0c;其他迭代器不会受到影响

中科大 计算机网络5 接入网和物理媒体

接入网 接入网&#xff1a;把边缘&#xff08;主机&#xff09;接入核心&#xff08;路由器&#xff0c;交换机&#xff09; 骨干网【连接主机和主机】和接入网中都有物理媒体 接入方式&#xff1a;有线和无线 带宽共享/独享 接入网&#xff1a;住宅接入modem modem调制解调…

STL源码剖析 序列式容器 deque双端队列

相较于vector的内存拷贝&#xff0c;deque在内存不足时只需要进行内存的拼接操作即可&#xff0c;不需要重新配置、复制、释放等操作&#xff0c;代价就是迭代器的架构不是一个普通的指针&#xff0c;比较复杂d e q u e 的迭代器 deque是分段连续空间。维持其“整体连续”假象…

中科大 计算机网络6 Internet结构和ISP

互联网的结构 端系统通过接入ISPs接入互联网 n个ISP互相连接&#xff1a; IXP,Internet exchage point:互联网接入点&#xff0c;互联网交互点 ISP&#xff1a;互联网服务提供商&#xff0c;提供接入&#xff0c;提供网络【中国移动&#xff0c;中国电信】 ICP&#xff1a…

STL源码剖析 Stack栈 queue队列

随机迭代器用于随机数据访问&#xff0c;所以栈stack不具备此功能

中科大 计算机网络8 协议层次和服务模型

协议层次 协议层次&#xff1a;现实生活中的例子 分层 分层处理和实现复杂系统 图中&#xff0c;左边是模块&#xff0c;右边是分层 计算机的设计是分层&#xff0c;每一层实现一个或一组功能&#xff0c;下层向上层提供服务&#xff1b;但效率比较低 对等层实体通过协议来交换…

STL源码剖析 heap堆结构

heap一般特指max-heap&#xff0c;即最大的元素位于heap和array的首部 heap不提供遍历功能&#xff0c;也不提供迭代功能

中科大 计算机网络9 互联网历史

总纲 计算机网络 早期1960以前 1961-1972 NCP协议&#xff1a;相当于现在的TCP和IP协议 每个节点即是数据的源也是数据的目标

STL源码剖析 序列式容器 slist

STL l i s t 是个双向链表(double linked lis t) 。SGI STL提供了一个单向链 表 (single linked lis t) , 名 为 slist s l i s t 和 l i s t 的主要差别在于&#xff0c;前者的迭代器属于单向的Forwardlterotor, 后者的迭代器属于双向的Bidirectional Iterator.为此&#xff0…

中科大 计算机网络12 Web和HTTP

Web与HTTP 对象&#xff1a;web页中其实是对象链接 URL&#xff1a;通用资源定位符【任何对象都可以使用URL来唯一标识】 用户名&#xff1a;口令【支持匿名访问&#xff0c;用户名和口令不计】 端口&#xff1a;HTTP&#xff1a;80 FTP&#xff1a;21【使用默认端口号&#x…