python 第七章 字典dict {}

系列文章目录
第一章 初识python
第二章 变量
第三章 基础语句
第四章 字符串str
第五章 列表list []
第六章 元组tuple ( )



字典的应用场景

思考1: 如果有多个数据,例如: Tom’,男20,如何快速存储?
答:列表 list1 = ['LiHua', '男', 20]

思考2:如何查找到数据’LiHua’?
答:查找到下标为0的数据即可 list1[0]

思考3: 如果将来数据顺序发生变化,如下所示,还能用 list1[0] 访问到数据’LiHua’吗?
list1 = [男',20,'LiHua']
答:不能,数据’LiHua’此时下标为2

思考4: 数据顺序发生变化,每个数据的下标也会随之变化,如何保证数据顺序变化前后能使用同一的标准查找数据呢?
答:字典,字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持下标后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。

创建字典的语法

字典特点:

  • 符号为大括号
  • 数据为键值对形式出现
  • 各个键值对之间用逗号隔开

有数据字典:

  • dict1 = {'name': 'LiHua', 'age': 20, 'gender': '男'}

空字典:

  • dict2 = {}
  • dict3 = dict()
# 有数据字典
dict1 = {'name': 'LiHua', 'age': 20, 'gender': '男'}

print(type(dict1))  # <class 'dict'>
print(dict1)  # {'name': 'LiHua', 'age': 20, 'gender': '男'}

注意:一般称冒号前面的为键(key) 简称k;冒号后面的为值(value),简称v

# 1. 直接使用 dict()函数转换
# 使用dict()方法 ,将一个元组列表转换为字典
l = [("name", "zhangsan"), ("age", 18), ("sex", "man")]
d = dict(l)
print(d)
# 2.使用dict()方法 ,将一个打包后的元组转换为字典
key = ("name", "age", "sex")
value = ("zhangsan", 18, "man")
d = dict(zip(key, value))  # zip()进行映射
print(d)

在这里插入图片描述

字典常见操作

写法: 字典序列[key] = 值

注意:
1.如果key存在则修改这个key对应的值; 如果key不存在则新增此键值对。
2.字典为可变类型

# 有数据字典
dict1 = {'name': 'LiHua', 'age': 18, 'gender': '男'}

dict1['name'] = "意境"
print(dict1)  # {'name': '意境', 'age': 18, 'gender': '男'}

dict1['id'] = 52
print(dict1)  # {'name': '意境', 'age': 18, 'gender': '男', 'id': 52}

写法: 字典序列[key] = 值

注意: 如果key存在则修改这个key对应的值; 如果key不存在则新增此键值对。

  • del() / del: 删除字典或删除字典中指定键值对
    删除失败会报错
d1 = {'name': '意境', 'age': 18, 'gender': '男'}

del (d1)
print(d1)  # 报错证明删除成功
d1 = {'name': '意境', 'age': 18, 'gender': '男'}

del d1['name']
print(d1)  # {'age': 18, 'gender': '男'}
# del d1['name']  # 报错 KeyError: 'name' 没有name这个键了

  • clear(): 清空字典
d1 = {'name': '意境', 'age': 18, 'gender': '男'}

d1.clear()
print(d1)  # {}

  • key值查找
    字典序列[key]

如果当前查找的key存在,则返回对应的值;否则则报错.
在这里插入图片描述

  • get()
    语法
    字典序列.get(key,默认值)

注意: 如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。

在这里插入图片描述

  • keys() 查找字典中所有的key,返回可迭代的对象
    字典序列.keys()
    返回值:dict_keys,是一个可迭代的对象,也就是说我们可以用for循环遍历的一个对象
    在这里插入图片描述
  • 字典序列.values()
    查找字典中所有的值(value),返回可迭代的对象
d1 = {'name': '意境', 'age': 18, 'gender': '男'}

print(d1.values())  # dict_values(['意境', 18, '男'])
print(type(d1.values()))  # <class 'dict_values'>
  • 字典序列.items()
    查找所有键值对,返回可迭代的对象,里面的数据是元组,元组数据1是字典的key,元组数据2是字典key对应的值。
d1 = {'name': '意境', 'age': 18, 'gender': '男'}

print(d1.items())  # dict_items([('name', '意境'), ('age', 18), ('gender', '男')])
print(type(d1.items()))  # <class 'dict_items'>

字典的循环遍历

遍历字典的key

d1 = {'name': '意境', 'age': 18, 'gender': '男'}

for key in d1.keys():
    print(key)
    print(d1[key])

在这里插入图片描述

遍历字典的value

d1 = {'name': '意境', 'age': 18, 'gender': '男'}

for value in d1.values():
    print(value)

在这里插入图片描述

遍历字典的元素

在这里插入图片描述

遍历字典的键值对(拆包)

我们对得到的键值对进行拆包动作

d1 = {'name': '意境', 'age': 18, 'gender': '男'}

for key,value in d1.items():
    print(f"{key} = {value}")

在这里插入图片描述

.items()返回的迭代对象内部是元组,一个元组一个键值对,元组里面有两个数据,第一个是字典的key,第二个是字典的value,所以我们拿了两个临时变量,意味着将元组里第一个数据存储到第一个临时变量,元组里第二个数据存储到第二个临时变量,这就是把元组数据进行了分离,分别分离到了key、value两个临时变量做了接收,那么这个动作就是所谓的拆包动作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值