系列文章目录
 第一章 初识python
 第二章 变量
 第三章 基础语句
 第四章 字符串str
 第五章 列表list []
 第六章 元组tuple ( )
文章目录
- 字典的应用场景
 - 创建字典的语法
 - 字典常见操作
 - 增
 - 改
 - 删
 - 查
 
- 字典的循环遍历
 - 遍历字典的key
 - 遍历字典的value
 - 遍历字典的元素
 - 遍历字典的键值对(拆包)
 
字典的应用场景
思考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
字典常见操作
增
写法:
字典序列[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两个临时变量做了接收,那么这个动作就是所谓的拆包动作。



















