python基础:字典 python中字典的基本操作
ps:文中代码块可以长按复制,左滑拖动查看全部
在 Python 中,字典(dict)是非常重要的数据结构,它用于存储以“键-值”对形式组织的数据。字典是无序的、可变的、并且键是唯一的。字典非常适合用于查找、插入和删除元素,它广泛应用于各种场景,如缓存、数据库记录、配置信息等。
本文将从基本概念开始,逐步讲解 Python 字典的常见操作、方法、性能、以及一些高级用法。
1. 字典的基本概念
字典是一个由键-值对组成的无序集合,其中每个键(key)都对应一个值(value)。字典中的键是唯一的,但值可以重复。字典的键必须是不可变类型(如字符串、数字、元组等),而值可以是任何数据类型。
字典的创建:
# 创建字典的几种方式
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
上述代码创建了一个字典 person,它包含了3个键值对:name、age 和 city。
2. 访问字典的元素
字典中的值是通过键来访问的。你可以使用 [] 来访问字典中指定键对应的值。
# 访问字典中的元素
print(person['name']) # 输出 'Alice'
print(person['age']) # 输出 25
如果你访问的键不存在,Python 会抛出 KeyError 异常:
# 键不存在时会抛出 KeyError
print(person['gender']) # 会抛出 KeyError: 'gender'
为避免这种错误,可以使用 get() 方法,它在键不存在时返回 None(或者返回你指定的默认值):
print(person.get('gender')) # 输出 None
print(person.get('gender', 'Unknown')) # 输出 'Unknown'
3. 修改字典中的元素
字典是可变的,因此可以直接修改其中的值。通过指定键来更新对应的值:
# 修改字典中的元素
person['age'] = 30 # 修改 age 为 30
print(person) # {'name': 'Alice', 'age': 30, 'city': 'New York'}
如果键不存在,则会添加新的键值对:
# 添加新键值对
person['gender'] = 'Female'
print(person) # {'name': 'Alice', 'age': 30, 'city': 'New York', 'gender': 'Female'}
4. 删除字典中的元素
可以使用 del 语句或 pop() 方法来删除字典中的元素。
- del:用于删除字典中指定键的元素。
# 删除字典中的元素
del person['city'] # 删除键为 'city' 的元素
print(person) # {'name': 'Alice', 'age': 30, 'gender': 'Female'}
- pop():通过键删除字典中的元素,并返回被删除的值。
# 使用 pop 删除元素并返回其值
age = person.pop('age') # 删除 'age' 键,并返回对应的值
print(age) # 输出 30
print(person) # {'name': 'Alice', 'gender': 'Female'}
- popitem():删除并返回字典中的一个键值对(通常是最后插入的键值对,Python 3.7+)。
# 使用 popitem 删除并返回一个键值对
item = person.popitem()
print(item) # ('gender', 'Female')
print(person) # {'name': 'Alice'}
- clear():清空字典中的所有键值对。
# 清空字典
person.clear()
print(person) # 输出 {}
5. 遍历字典
你可以使用多种方式来遍历字典:
- 遍历键(keys()):
# 遍历字典中的键
for key in person.keys():
print(key)
- 遍历值(values()):
# 遍历字典中的值
for value in person.values():
print(value)
- 遍历键值对(items()):
# 遍历字典中的键值对
for key, value in person.items():
print(f"{key}: {value}")
6. 字典的常用方法
Python 字典提供了一些常用的方法来进行操作:
- update():用另一个字典或键值对更新当前字典。如果键已经存在,值会被更新;如果键不存在,会新增键值对。
# 更新字典
person.update({'age': 35, 'city': 'Boston'})
print(person) # {'name': 'Alice', 'age': 35, 'gender': 'Female', 'city': 'Boston'}
- setdefault():返回键的值,如果键不存在,则插入键,并赋予默认值。
# 如果 'gender' 不存在,则插入默认值 'Unknown'
gender = person.setdefault('gender', 'Unknown')
print(gender) # 输出 'Female'
print(person) # {'name': 'Alice', 'age': 35, 'gender': 'Female', 'city': 'Boston'}
- keys()、values()、items():分别返回字典中所有键、值和键值对的视图对象(view)。
# 获取键、值和键值对的视图
print(person.keys()) # dict_keys(['name', 'age', 'gender', 'city'])
print(person.values()) # dict_values(['Alice', 35, 'Female', 'Boston'])
print(person.items()) # dict_items([('name', 'Alice'), ('age', 35), ('gender', 'Female'), ('city', 'Boston')])
7. 字典的性能
字典在 Python 中是通过哈希表实现的,因此它提供了快速的查找、插入和删除操作。大多数情况下,字典的操作时间复杂度为 O(1)。
- 查找(get())、插入(update()) 和 删除(del、pop()) 都是常数时间复杂度 O(1),这使得字典成为处理大量数据时非常高效的数据结构。
8. 字典的高级应用
- 嵌套字典:字典可以作为值存储其他字典,形成嵌套结构。
students = {
'Alice': {'age': 25, 'major': 'Computer Science'},
'Bob': {'age': 22, 'major': 'Mathematics'}
}
print(students['Alice']['major']) # 输出 'Computer Science'
- 字典推导式:类似于列表推导式,可以用来创建新的字典。
# 字典推导式
squares = {x: x**2 for x in range(5)}
print(squares) # 输出 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
9. 总结
Python 中的字典(dict)是一种非常灵活且高效的数据结构。它提供了通过键访问、修改、删除值的功能,并且支持多种方法和操作来满足开发中的需求。字典的无序性和键值对结构使得它适用于很多场景,例如配置管理、存储 JSON 数据、缓存实现等。
掌握字典的基本操作、常用方法和高级应用,有助于你在 Python 编程中更加高效地处理数据。