Python基础语法(10)字典
学习目标
- 字典的应用场景
- 创建字典的语法
- 字典的常见操作
- 字典的循环遍历
字典的应用场景
当一组相关联的数据数据顺序发生改变时,字典可以保证使用数据顺序变化后能使用统一的标准查询到数据,字典里面的数据是以键值对的形式出现,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找到数据即可。(键值对、顺序无关)
创建字典的语法
字典的特点:
-
符号为大括号。
-
数据以键值对形式出现。
-
各个键值对以逗号隔开。
1
2
3
4
5
6
7
|
dict0 = {"key":"value"}
dict1 = {"name":"Tom", "age":20, "gender":"male"}
print(type(dict1)) # <class 'dict'>
print(type(dict0)) # <class 'dict'>
# 创建空字典
dict2 = {}
dict3 = dict()
|
字典的常用操作
新增or修改
写法:字典序列[key] = 值
⚠️注意:如果key存在则修改这个key的值;如果key不存在则新增这个键值对。
1
2
3
4
5
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
dict0["name"] = "Rose"
print(dict0) # {'name': 'Rose', 'age': 20, 'gender': 'male'}
dict0["id"] = 111
print(dict0) # {'name': 'Rose', 'age': 20, 'gender': 'male', 'id': 111}
|
删除操作
- del ()、del:删除字典或删除字典中指定的键值对。
1
2
3
4
5
6
7
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
del dict0["gender"]
print(dict0) # {'name': 'Tom', 'age': 20}
del dict0["abc"]
print(dict0) # 报错,不存在abc键
del(dict0)
print(dict0) # 报错,字典已被删除
|
1
2
3
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
dict0.clear()
print(dict0) # {}
|
查找
- key值查找:利用key值查找到该key值对应的value值。
1
2
3
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0["name"]) # Tom
print(dict0["id"]) # Error,没有该key值
|
⚠️注意:key存在时查找成功能返回相应的value值,不存在则会报错。
- 函数get()查找:也是利用key值查找到key对应的value值,如果不存在返回设置的默认值。
语法
⚠️注意:如果查找的key不存在,则返回第二个参数默认值。如果第二个参数省略,则返回None。
实验
1
2
3
4
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0.get('name')) # Tom
print(dict0.get('id')) # None
print(dict0.get('id', 999)) # 999
|
- 函数keys()查找: 查找返回一个可迭代(可遍历)的对象,该对象是字典的所有key。
语法
实验
1
2
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0.keys()) # dict_keys(['name', 'age', 'gender'])
|
- 函数values()查找:查找返回一个可迭代(可遍历)的对象,该对象是字典的所有value。
语法
实验
1
2
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0.values()) # dict_values(['Tom', 20, 'male'])
|
- 函数items()查找:查找返回一个可迭代(可遍历)的对象,该对象为键值对,对象里的数据为元组,元组数据1是字典的key,元组数据2是字典的value,
语法
实验
1
2
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0.items()) # dict_items([('name', 'Tom'), ('age', 20), ('gender', 'male')])
|
字典的循环遍历
遍历字典的key
运用keys()函数取得可迭代的key对象,用for循环遍历,代码如下:
1
2
3
4
5
6
7
8
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
for key in dict0.keys():
print(key)
"""
name
age
gender
"""
|
遍历字典的value
同样的运用values()函数取得可迭代的value对象,用for循环遍历,代码如下:
1
2
3
4
5
6
7
8
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
for value in dict0.values():
print(value)
"""
Tom
20
male
"""
|
遍历字典的元素
运用items()函数取得可迭代的键值对对象,用for循环遍历,代码如下:
1
2
3
4
5
6
7
8
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
for item in dict0.items():
print(item)
"""
('name', 'Tom')
('age', 20)
('gender', 'male')
"""
|
遍历字典的键值对(拆包操作)
运用两个临时变量进行拆包。
1
2
3
4
5
6
7
8
9
|
dict0 = {"name":"Tom", "age":20, "gender":"male"}
for key, value in dict0.items():
# items函数取到的存放有两个元素的元组,运用两个临时变量进行分离。
print(f"{key} = {value}")
"""
name = Tom
age = 20
gender = male
"""
|
总结
-
字典的特性是:无序,数据没有下标;以键值对形式存储,需要的值value依靠key来查找。
-
创建字典的方法是:空字典创建直接使用大括号或者用 dict ()函数创建。
-
字典常用操作:
- 字典内数据增加和修改操作:直接使用
字典序列[key] = 值的写法,如果数据在原字典中存在,则发生修改,如果不存在则直接新增。
- 字典删除操作:使用
del或者del(目标)来直接删除字典或者字典内数据。
- 字典的查找:直接使用key值查找;使用get函数
字典序列.get(key, 默认值)来查找,成功返回value值,不成功返回默认值(不设置时为None);使用keys函数字典序列.keys()可以返回一个所有key值的迭代对象;使用values函数字典序列.valuess()可以返回一个所有value值的迭代对象;使用items函数字典序列.items()可以返回一个迭代对象,对象里的数据为键值对组成的元组,元组数据1是字典的key,元组数据2是字典的value。
-
字典拆包:使用for循环中的两个临时变量对items函数生成的可迭代对象进行拆包,第一个变量存放键值对元组数据中的key,第二个变量存储键值对元组数据中的value。