目录

Python基础语法(10)字典

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)  # 报错,字典已被删除
  • clear():清空字典。
1
2
3
dict0 = {"name":"Tom", "age":20, "gender":"male"}
dict0.clear()
print(dict0)  # {}

查找

  1. 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值,不存在则会报错。

  1. 函数get()查找:也是利用key值查找到key对应的value值,如果不存在返回设置的默认值。

语法

1
字典序列.get(key, 默认值)

⚠️注意:如果查找的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
  1. 函数keys()查找: 查找返回一个可迭代(可遍历)的对象,该对象是字典的所有key。

语法

1
字典序列.keys()

实验

1
2
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0.keys())  # dict_keys(['name', 'age', 'gender'])
  1. 函数values()查找:查找返回一个可迭代(可遍历)的对象,该对象是字典的所有value。

语法

1
字典序列.values()

实验

1
2
dict0 = {"name":"Tom", "age":20, "gender":"male"}
print(dict0.values())  # dict_values(['Tom', 20, 'male'])
  1. 函数items()查找:查找返回一个可迭代(可遍历)的对象,该对象为键值对,对象里的数据为元组,元组数据1是字典的key,元组数据2是字典的value,

语法

1
字典序列.items()

实验

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。