字典dict
数据类型:int整型 float浮点数 bool布尔值 str字符串 list列表 tuple元组 dict字典 set集合
可变数据类型:
字典、列表、集合、自定义的对象等
不可变数据类型:
数字、字符串、元组、function等
字典:
1.字典的定义形式(key键 value值)
字典中通过"键对象"找到对应的"值对象"
dict1 = {key1:value1,key2:value}
CN:China
JP:Japan
US:America
key 具有唯一性,一般情况下使用字符串表示
country = {"CN":"China","JP":"Japan","US":"America"} print("country = {}\t数据类型为:{}".format(country,type(country))) # key具有唯一性,如果出现重复的key,后面的值会把前面的覆盖掉 country1 = {"CN":"China","JP":"Japan","US":"America","JP":123} print("country1 = {}\t数据类型为:{}".format(country1,type(country1)))
2.元素的访问 dict1[key1]
# 使用列表进行数据存储 stu1_list = ["2020110157","任先生",23,"男"] # 使用字典进行数据存储 stu1_dict = {"sn":"2020110157","name":"任先生","age":23,"sex":"男"} # 元素的访问 print("%s的年龄为:%d"%(stu1_dict["name"],stu1_dict["age"])) print("{}的性别为:{}".format(stu1_dict["name"],stu1_dict["sex"]))
3.元素的常用方法
增
students[key] = value
(value可以为任意类型,元组,列表,字典都可以)
students = {} # 插入操作 # 学号sd,学生信息的key键对象 sd =input("请输入学生学号:") # 姓名name,分数score,学生信息的value值对象 name = input("请输入学生姓名:") score = int(input("请输入学生分数:")) # # student数据类型为列表 # student = [name,score] student = {"name":name,"score":score} students[sd] = student print("students = ",students)
删
pop(key)
删除键对象为key的value值,如果key值存在,则删除操作;没有找到要删除的key值,则会报错 keyError
del students[key]
删除键对象为key的value值,如果key值存在,则删除操作;没有找到要删除的key值,则会报错 keyError
注意:
keyError:没有要删除元素的时候,报错
students = {"001":{"name":"张楚岚","score":"80"},"002":{"name":"诸葛青","score":"85"}} print("studens = ",students) # 删除操作 del_sd = input("请输入要删除的学生学号:") # # pop 删除键对象为key的value值 # students.pop(del_sd) del students[del_sd] print("students = ",students)
改
key唯一,二次赋值的时候,新值覆盖旧值
students[key] = new_value
students = {"001":{"name":"张楚岚","score":"80"},"002":{"name":"诸葛青","score":"85"}} print("studens = ",students) # 修改操作 updata_sd = input("请输入要修改的学生学号:") update_name = input("请输入新的名字:") update_score = int(input("请输入新的分数:")) # 生成新的学生信息,并进行修改/覆盖 new_students = {"name":update_name,"score":update_score} students[updata_sd] = new_students print("修改之后的students学生信息:") print("students = ",students)
查
in
not in
4.元素的遍历
第一种遍历方法
country = {"CN":"China","JP":"Japan","US":"America"} all_keys = country.keys() print("all_keys = {0}\t数据类型为:{1}".format(all_keys,type(all_keys))) # 遍历key键对象 print("遍历键对象key:") for key_1 in all_keys: print(key_1,end="\t") all_values = country.values() print("\n\nall_values = {0}\t数据类型为:{1}".format(all_values,type(all_values))) # 遍历value值对象 print("遍历值对象value:") for value_1 in all_values: print(value_1,end="\t")
第二种遍历方法
country = {"CN":"China","JP":"Japan","US":"America"} for keys,values in country.items(): print(keys,values)
注意:
可以用zip两个列表/元组合成一个字典
# zip()创建字典 key = ["id","name","specialty"] value_1 = ["001","王也","风后奇门"] students = dict(zip(key,value_1)) print(students)
案例:图书管理系统
library = [{},{},{}]
""" 课后练习: - 完善图书管理系统其他功能 - 封装函数:判断一个数字是否为质数 - 打印1-1000之间所有的质数,两个一排 - 封装函数:判断一个数字是否为水仙花数 - 打印所有的水仙花数 """ # 图书管理系统 library = [] # 显示系统菜单 def showMenu(): print("1.添加图书操作") print("2.查询图书操作") print("3.删除图书操作") print("4.修改图书操作") print("5.展示所有图书") print("6.退出系统操作") # 添加图书 def append_book(): # 用嵌套字典,存储单个图书信息 liberary_book = {"id":id,"name":name,"price":price} # 将图书添加到图书列表中 library.append(liberary_book) print("添加成功!") # 查询图书 def inqure_book(id): # 判断图书信息库里面,是否有要查询的图书编号 # 1.获取所有图书信息列表 for index_book in range(len(library)): # 2.判断all_book中是否有要查找的图书编号 if id not in library[index_book]["id"]: # 没有找到要查找的数据 pass else: # 找到要查找的数据,并进行后续操作(此时要声明index,index_1为全局变量) global index,index_1 index = True index_1 = index_book # 删除图书 def delete_book(): # 要先判断图书信息库里面,是否有要删除的图书编号(调用查找图书函数) inqure_book(delete_id) # 如果查询到指定图书(即index = True),进行删除操作 if index == True: del library[index_1] print("删除成功!") else: print("很遗憾,图书信息库里没有您要删除的图书编号:{},请核对后再次操作...".format(delete_id)) # 修改图书 def update_book(): # 要先判断图书信息库里面,是否有要修改的图书编号(调用查找图书函数) inqure_book(update_id) # 如果查询到指定图书(即index = True),进行修改操作 if index == True: new_name = input("请输入新的图书名称:") new_price = int(input("请输入新的图书价格:")) library[index_1]["name"] = new_name library[index_1]["price"] = new_price print("修改成功!") else: print("很遗憾,图书信息库里没有您要修改的图书编号:{},请核对后再次操作...".format(update_id)) # 展示所有图书信息 def show_all_book(): print("所有图书信息如下:") for all_book in library: print("图书编号:{0}\t名称:{1}\t价格:{2}".format(all_book["id"],all_book["name"],all_book["price"])) while True: print("---------- 图书管理系统 ----------") # 判断是否查询到指定图书的标记 index = False # 当查询到指定图书的标记时,记录此时的索引值 index_1 = None # 调用显示系统菜单函数 showMenu() input_1 = input("请输入要执行的操作1-6:") if input_1 == "1": # ----------- 1.添加图书操作 ------------ id = input("请输入要添加的图书编号:") name = input("请输入图书名称:") price = int(input("请输入图书价格:")) # 调用添加图书操作 append_book() elif input_1 == "2": # ----------- 2.查询图书操作 ------------ search_id = input("请输入要查询的图书编号:") # 调用查询图书操作 inqure_book(search_id) # 如果查询到指定图书(即index = True),进行打印操作 if index == True: print("图书编号:{0}\t名称:{1}\t价格:{2}".format(library[index_1]["id"], library[index_1]["name"],library[index_1]["price"])) else: print("很遗憾,图书信息库里没有您要查找的图书编号:{},请核对后再次操作...".format(search_id)) elif input_1 == "3": # ----------- 3.删除图书操作 ------------ delete_id = input("请输入要删除的图书编号:") # 调用删除图书操作 delete_book() elif input_1 == "4": # ----------- 4.修改图书操作 ------------ update_id = input("请输入要修改的图书编号:") # 调用修改图书操作 update_book() elif input_1 == "5": # ----------- 5.展示所有图书 ------------ # 展示全部图书信息 show_all_book() elif input_1 == "6": # ----------- 6.退出系统操作 ------------ # 进行退出系统操作 print("感谢您的使用,下次再见...") exit() else: print("输入指令有误,请按照提示重新输入...")