系列文章目录
第一章 初识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)) #
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存在,则返回对应的值;否则则报错
.
字典序列.get(key,默认值)
注意: 如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。
字典序列.keys()
字典序列.values()
d1 = {'name': '意境', 'age': 18, 'gender': '男'}
print(d1.values()) # dict_values(['意境', 18, '男'])
print(type(d1.values())) #
字典序列.items()
d1 = {'name': '意境', 'age': 18, 'gender': '男'}
print(d1.items()) # dict_items([('name', '意境'), ('age', 18), ('gender', '男')])
print(type(d1.items())) #
d1 = {'name': '意境', 'age': 18, 'gender': '男'}
for key in d1.keys():
print(key)
print(d1[key])
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
两个临时变量做了接收,那么这个动作就是所谓的拆包动作。