【Python】什么是字典(Dictionary)?
什么是字典(Dictionary)?
字典(Dictionary)是 Python 中一种 可变(mutable)的数据结构,用于存储键值对(key-value pairs)。字典通过 键(key)来快速查找 值(value)。与列表或元组不同,字典是通过键来访问值,而不是通过索引。
字典在很多编程语言中都有类似的数据结构(比如哈希表、关联数组等)。
字典的特点:
- 无序:字典中的元素是无序的(直到 Python 3.7,字典元素是按插入顺序存储的,但这不是字典的核心特性)。你不能像列表一样通过索引访问字典中的元素。
- 键值对:字典中的每个元素是一个键值对,即每个键对应一个值。
- 唯一键:字典中的键是唯一的,不能重复。如果使用相同的键赋值,原有的值会被新值覆盖。
- 可变:字典是可变的,可以添加、删除或更新键值对。
创建字典
字典可以通过花括号
{}
来创建,键和值之间用冒号:
分隔,多个键值对之间用逗号,
分隔。
示例:
# 创建一个字典
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 创建一个空字典
empty_dict = {}
# 创建一个包含不同数据类型的字典
person = {"name": "Bob", "age": 30, "is_student": False, "courses": ["Math", "Science"]}
访问字典的元素
可以通过字典的 键 来访问对应的值。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 通过键访问值
print(my_dict["name"]) # 输出 Alice
print(my_dict["age"]) # 输出 25
常见的字典操作
添加/更新键值对: 如果键已存在,值会被更新;如果键不存在,则会添加新的键值对。
my_dict = {"name": "Alice", "age": 25}
# 添加新的键值对
my_dict["city"] = "New York"
# 更新已有的键值对
my_dict["age"] = 26
print(my_dict) # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York'}
删除键值对: 使用
del
关键字或pop()
方法删除键值对。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 使用 del 删除键值对
del my_dict["city"]
# 使用 pop() 删除键值对
age = my_dict.pop("age") # 删除并返回键 "age" 对应的值
print(my_dict) # 输出 {'name': 'Alice'}
print(age) # 输出 25
查看所有的键、值和键值对:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict.keys()) # 输出 dict_keys(['name', 'age', 'city'])
print(my_dict.values()) # 输出 dict_values(['Alice', 25, 'New York'])
print(my_dict.items()) # 输出 dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
keys()
:返回字典中所有的键。values()
:返回字典中所有的值。items()
:返回字典中所有的键值对。
字典的查找操作:
my_dict = {"name": "Alice", "age": 25}
# 使用 get() 方法查找键值对
print(my_dict.get("name")) # 输出 Alice
print(my_dict.get("city", "Unknown")) # 输出 Unknown(因为 "city" 不在字典中)
get()
:通过键查找对应的值。如果键不存在,可以设置一个默认值。
字典的清空: 使用 clear()
方法可以清空字典中的所有元素。
my_dict = {"name": "Alice", "age": 25}
my_dict.clear()
print(my_dict) # 输出 {}
字典的长度: 使用 len()
函数获取字典中的键值对个数。
my_dict = {"name": "Alice", "age": 25}
print(len(my_dict)) # 输出 2
字典的应用场景
- 存储和查找:字典常用于需要通过唯一标识符(键)快速查找值的场景,例如通过学生 ID 查找学生信息,或者存储配置信息。
- 数据映射:字典非常适合存储映射关系,比如把国家名称映射到其首都,或把用户名映射到用户的个人资料。
- JSON 数据:字典的结构与 JSON 格式非常相似,Python 中的字典通常用于表示从 JSON 格式转换来的数据。
字典的优缺点
优点:
- 查找速度快:字典使用哈希表实现,查询操作通常具有常数时间复杂度
O(1)
,比列表等其他数据结构要高效。- 灵活性高:字典的键可以是任何不可变类型(如字符串、数字、元组),而值可以是任意类型的数据。
缺点:
- 无序:字典中的元素是无序的,虽然 Python 3.7+ 中保持了插入顺序,但不能像列表一样按顺序访问元素。
- 占用内存较大:字典相比列表会占用更多的内存,因为它需要维护哈希表。
总结:
字典是一个非常强大且灵活的数据结构,它以 键值对 的形式存储数据,通过 键 来访问对应的 值。在需要通过唯一标识符快速查找数据的场景中,字典是非常合适的选择。