1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python学习6 字典基础知识和常用函数

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

时间:2019-01-04 09:20:43

相关推荐

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 = Truewhile flag:name = input("请输入姓名")for i in persons:if name == i["name"]:print("该姓名在 persons 中存在,结束循环")flag = Falsebreakelse:age = int(input("请输入年龄"))check = {}check[name] = agepersons.append(check)breakprint(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=0for i in students:if i["score"]<60:count+=1print("不及格学生人数:"+str(count))# (2)打印不及格学生姓名和对应成绩;count=0list=[]for i in students:if i["score"]<60:list.append(i["name"]+"的成绩为"+str(i["score"]))print("不及格学生信息:")print(list)# (3)统计未成年学生个数;count=0for i in students:if i["age"]<18:count+=1print("未成年学生人数:"+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=0print(students)for i in students:if i["gender"]=='不明':students.pop(j)j += 1print(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=97for 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)]=sprint(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 reducelist1=list(score.values())average=reduce(lambda x,y:x+y,list1)print("the average score="+str(average/len(list1)))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。