字典概念

字典是 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)))

Python学习6 字典基础知识和常用函数相关推荐

  1. Python学习4 列表基础知识和常用函数

    列表 1.格式 2.增删改查 列表下标: 0–n-1 -n-(-1) #对列表进行切片 #0-(n-1) #-n-(-1) list=['dq','python','mm'] print(list[0 ...

  2. Python学习5 元组基础知识和常用函数

    元组概念 元组:a=(1,23) 列表:a= [1,23] 创建和访问元组 Python 的元组与列表类似,不同之处在于tuple被创建后就不能对其进行修改,类似字符串. 元组与列表类似,也用整数来对 ...

  3. python学习记录(基础知识+案例实现)

    day01 1.变量 """ 变量在内存中创建一个空间,专门存储数据name = zhangsan命名规范不能以数字.特殊字符开头,不能以关键字命名英文单词.数字.下划线 ...

  4. Python学习之并发基础知识

    8 并发编程 8.1 基础知识 8.1.1 操作系统的定义 操作系统是存在于硬件与软件之间,管理.协调.调度软件与硬件的交互. 资源管理解决物理资源数量不足和合理分配资源这两个问题, 通俗来说,操作系 ...

  5. Python学习笔记(基础知识第三篇:列表、元组、字典、集合)

    一.列表 1.列表知识 定义一个空的列表,列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套). 打印出第一个元素,列表索引值以0为开始值,-1为从末尾的开始位置. 列表可以使用 ...

  6. Python学习之路-基础知识1

    永远的Hello World! print("Hello World!") >>Hello World! 数据类型 Number类型: 数值类型,用于存储数字 Inte ...

  7. Python学习之路-基础知识2-文件操作

    文件操作     现有文件test.txt内容如下: 床前明月光, 疑是地上霜. 举头望明月, 低头思故乡. >>>f = open("test.txt",&qu ...

  8. Python基础知识与常用数据类型

    Python基础知识与常用数据类型 目录 Python基础知识与常用数据类型 一.Python概述: 二.Python中的基础语法: 三.Python内置数据结构: 4.附录 一.Python概述: ...

  9. python学习课程 0基础学Python视频教程

    python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...

最新文章

  1. 【约束布局】ConstraintLayout 约束布局 ( 简介 | 引入依赖 | 基本操作 | 垂直定位约束 | 角度定位约束 | 基线约束 )
  2. java教程传智播客,面试真题解析
  3. 在Linux中实现https访问站点
  4. 学校计算机社团都干些什么,计算机社团管理制度
  5. 职场高效率:用印象笔记来提升你的工作效率
  6. knockout的监控数组实现 - 司徒正美
  7. 静态NAT64实验配置
  8. 电脑图标出现蓝色问号解决方法
  9. 类工厂模式(TDB)
  10. [转]XPO 条件相关类
  11. 人肉搜索酝酿灰色产业:首批淘客月入万元
  12. POI 自定义16进制颜色导出
  13. 程序猿必知英语词汇总结
  14. Haskell:理解Haskell中的CPS(Cont)
  15. PHY驱动调试之 --- PHY控制器驱动(二)
  16. 两个圆柱相交的体积 UVALive 5096 Volume
  17. 空气质量指数c语言,基于STM32的小范围空气质量的监测与预报
  18. 记忆力很差怎么学计算机,九个方法增强记忆力 学生记忆力很差怎么办
  19. http://www.dewen.net.cn/q/15328/问个正则表达式 贪婪 和 不匹配某个字符串问题
  20. JavaScript第二十四篇 高级定时器(下)

热门文章

  1. linux 分区 文件,Linux的分区与文件结构
  2. arcgis创建剖面线execl文件
  3. WebDAV, IIS, 和SharePoint之间的关系
  4. EasyUI学习总结(一)——EasyUI入门
  5. System中不存在类型或命名空间名称Transactions
  6. SharePoint2013 备份还原
  7. 一步步编写操作系统 42 用c语言编写内核
  8. REVERSE-PRACTICE-CTFSHOW-2
  9. 【Python学习】 简单语法与常见错误(持续更新)
  10. 【2019牛客暑期多校训练营(第二场)- E】MAZE(线段树优化dp,dp转矩阵乘法,线段树维护矩阵乘法)