字典"/>
1.7.4字典
字典
字典(dictionaries):
1.也是一种容器, 不同于列表, 元组, 字典是无序的.
2.可改变, 可以增加数据, 修改数据, 删除数据. 查询数据
字典由键值对组成.没有索引, 通过键查找数据.
3.注意:
字典中的键相当于列表,元组中的索引, 所以是唯一的, 键不能重复(值可以重复出现)
字典的写法: {键1: 值1, 键2: 值2, 键3: 值3}
-
创建字典
# 1.声明一个空字典, 注意命名: 不能用 dict 这个单词 dict1 = {} print(dict1, type(dict1)) # 2.创建一个非空字典 dict2 = {"name": "张艺兴", "age": 16, "sex": "男"} print(dict2) dict3 = {"对抗路": "花木兰", "打野路": "孙悟空", "中路": "武则天", "射手位": "马可波罗", "辅助位": "张飞"} print(dict3) # 3.使用dict() 函数创建字典 dict4 = dict(name="卢俊义", age=16, sex="男") print(dict4)
-
字典的键与值
# 4.字典的键可以用什么类型的数据? # 键: 可以用整型, 字符串来表示, 也可以用浮点型表示, 还可以用布尔型, None # 可以用元组来做字典的 键, 列表不可以做键, 字典不可以做键. 列表和字典是可以改变的,所以不能做字典的键, 字典的键是不变的. d1 = {False: "zero", True: "one", 2.0: "two", (1,): "three", "4": "four"} # TypeError: unhashable(不可哈希) type: 'list' # TypeError: unhashable type: 'dict' print(d1) # 5.字典的值可以用什么类型的数据? # 字典值: 可以用 整型, 浮点型, 字符串, 布尔值, 列表, 元组, 字典 None 表示 d2 = {"整型": 123, "浮点型": 3.11415926, "字符串": "动手敲键盘", "布尔型": True, "列表": [11, 22], "元组": (1, 2, 3), "字典": {"字典": {}}, None: None} print(d2)
-
字典的数据添加与修改
# 6.字典数据添加, 字典名[键] = 值 d3 = {} d3["name"] = "高球" print(d3) d3["age"] = 16 d3["height"] = 175 d3["weight"] = 110.2 print(d3) # 7.字典数据修改 字典名[要修改的键] = 新值 d3["name"] = "吴奇隆" print(d3)
-
字典数据查询与删除
# 8.查询字典数据, 根据字典的键来查询对应的值, print(d3["name"]) print(d3["age"]) print(d3["weight"])# 9.删除字典数据 使用del关键字用来删除数据 del d3["age"] print(d3) del d3["height"] print(d3)
-
字典查询函数
# 创建字典 lol = {"上单": "鳄鱼", "中路": "沙皇", "下路": "伊泽瑞尔", "打野": "莉莉娅", "辅助": "锤石"} print(lol) # 1.get(): 括号中填入字典的键, 用来获取相对应的值. 当填的键不存在时,返回值为None.第二个参数填写一个备用数值, 当我们要查询的键不存在则返回备用的数值. v = lol.get("中路") print(v) v = lol.get("坦克", "泰坦") print(v) # 创建字典, 值为列表 movie_star = {"武打电影": ["成龙", "甄子丹", "李连杰"], "喜剧电影": ["沈腾", "徐峥", "周星驰", "王宝强"], "恐怖电影": ["林正英", "午马"], "战争电影": ["张译", "吴京", "鹿晗", "欧豪"]} print(movie_star) # 2.遍历字典 # 直接遍历字典, 得到的是字典中的键 for m in movie_star:print(m) # key: 键 value: 值 # 4.items(): movie_star.items() 会将字典打包成一个列表嵌套元组, 元组中放入键值对. # 一个变量遍历字典items 会得到键值对打包的元组. for t in movie_star.items():print(t) # 两个变量遍历字典items 会得到键和值 for key, value in movie_star.items():print(f"键:{key} - 值: {value}") # 5.keys()取键: 取出字典中所有的键, 放到一个列表中 print(movie_star.keys()) for k in movie_star.keys():print(k) # 6.values()取值: 取出字典中所有的值, 放到一个列表中 print(movie_star.values()) for v in movie_star.values():print(v)
-
字典值删除
# 7.pop(): 括号中填写字典的键, 对这个键值对进行一个删除. 返回值是键对应的值. print("-----------------------------") m = movie_star.pop("恐怖电影") print(movie_star) print(m) # 8.popitem(): 删除还是排在最后的键值对. 返回值是元组, 键值对放在元组中. print("-----------------------------") m = lol.popitem() print(m) # 9.clear(): 清空字典. movie_star.clear() print(movie_star)
-
字典案例
手机销售系统(用字典写):
1. 创建一个字典,键:手机品牌做键, 值: 手机的信息(型号,价格,库存)2. 根据查询字典的方法增加增删改查3. 将字典的增删改查写入每个功能选项
phones = {"华为": ["华为mate40", 4999, 5000], "苹果": ["iphone12", 5100, 6000], "小米": ["小米10", 5999, 8000], "vivo": ["vivo-x50", 5498, 8000]}# 系统循环起来
while True:print("""---------------------------------------------| || 欢迎您来到手机购买系统! || 1.查看所有的手机品牌 || 2.购买手机 || 3.更改手机库存信息 || 4.移除手机库存信息 || 5.退出系统 |---------------------------------------------""")# 首先让用户键盘输入选择的序号num = input("请输入您要操作的序号:")# 这个while判断循环,判断num是否为我们的选项,不是从新输入while num not in ["1", "2", "3", "4", "5"]:num = input("输入序号错误,请重新输入: ")if num == "1":# 没有写功能,就先写个pass保证这个地方不会报错# pass # 相当于什么都不执行print("以下是本店所有的手机信息:")for k in phones.keys():# 取字典的键print(k)# 取字典的值, 值是列表,存放手机信息phone_list = phones[k]# 输出列表中的手机信息print(" 手机型号:%s 手机价格:%d 手机库存:%d" % (phone_list[0], phone_list[1], phone_list[2]))elif num == "2":print("欢迎您购买手机")# 输入手机品牌,进行购买logo = input("请输入您要购买的品牌:")# 判断手机品牌字典中是否有# phones.keys() 是一个列表, 相当于# ["华为", "苹果", "小米", "vivo"]while logo not in phones.keys():logo = input("输入品牌不存在,请查询后再输入:")# 输出手机相关的信息print(f"""{logo}手机型号:{phones[logo][0]}手机价格: {phones[logo][1]}手机库存:{phones[logo][2]}""")# 键盘输入购买的数量,转成int类型,给库存做一个计算number = int(input("请输入购买的数量:"))while number <= 0 or number > phones[logo][2]:number = int(input("输入购买数量不正确,请重新输入:"))# 库存值phones[logo][2] -= number # 假如说买的数量过多库存不足# 手机总消费:手机单价 * 买的手机数量print(f"顾客您好!总共消费 {phones[logo][1] * number} 元")print("购买成功,正在扣除费用,请稍后...")elif num == "3":print("库存信息修改")logo = input("请输入您要修改信息的品牌:")while logo not in phones.keys():logo = input("输入品牌不存在,请查询后再输入:")print(f"""{logo}手机型号:{phones[logo][0]}手机价格: {phones[logo][1]}手机库存:{phones[logo][2]}""")phones[logo][0] = input("输入手机型号:")phones[logo][1] = int(input("输入手机价格:"))phones[logo][2] = int(input("输入手机库存:"))print(f"""{logo} 牌手机信息已经被修改手机型号:{phones[logo][0]}手机价格: {phones[logo][1]}手机库存:{phones[logo][2]}""")elif num == "4":print("库存信息删除")logo = input("请输入您要删除信息的品牌:")while logo not in phones.keys():logo = input("输入品牌不存在,请查询后再输入:")# 第一种删除方法,pop()函数,括号中方如要删除的字典的键,删除键值对phones.pop(logo)# 第二种 使用del关键字。# del phones[logo]print(f"{logo} 相关信息已经被删除")elif num == "5":# 结束程序exit()
更多推荐
1.7.4字典
发布评论