系列文章目录
第一章 初识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
两个临时变量做了接收,那么这个动作就是所谓的拆包动作。