字典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("输入指令有误,请按照提示重新输入...")


 
 
posted @ 2020-11-22 11:50  马铃薯1  阅读(150)  评论(0编辑  收藏  举报