关于python字典的所有操作
一、字典简介
字典(Dictionary)是Python中一种无序(Python 3.7+开始变为有序)、可变的数据结构,用{}
表示。它通过键值对(key-value pairs)存储数据,具有极快的查找速度。
特点:
-
键(key)必须是不可变类型(字符串/数字/元组)
-
值(value)可以是任意类型
-
键具有唯一性(重复键会覆盖)
二、创建字典
# 方法1:直接创建
person = {"name": "Alice", "age": 25, "is_student": False}
# 方法2:使用dict构造函数
scores = dict(math=90, physics=85)
# 方法3:字典推导式
square_dict = {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16}
# 空字典
empty_dict = {}
三、访问元素
# 通过键访问
print(person["name"]) # 输出:Alice
# get()方法(推荐,避免KeyError)
print(person.get("age")) # 25
print(person.get("email")) # None
print(person.get("email", "N/A")) # 返回默认值"N/A"
四、修改与添加
# 修改现有键的值
person["age"] = 26
# 添加新键值对
person["email"] = "alice@example.com"
# 批量更新 update()
person.update({"city": "Beijing", "age": 27})
五、删除元素
# del语句
del person["is_student"]
# pop() 删除并返回值
email = person.pop("email")
# popitem() 删除最后插入的项(Python 3.7+)
key, value = person.popitem()
# 清空字典
person.clear()
六、常用方法
方法 | 描述 | 示例 |
---|---|---|
keys() | 返回所有键 | person.keys() → dict_keys(['name', 'age']) |
values() | 返回所有值 | person.values() → dict_values(['Alice', 25]) |
items() | 返回所有键值对 | person.items() → dict_items([('name', 'Alice'), ...]) |
setdefault() | 安全设置默认值 | person.setdefault('country', 'China') |
七、遍历字典
# 遍历键
for key in person:
print(key)
# 遍历键值对
for key, value in person.items():
print(f"{key}: {value}")
# 遍历值
for value in person.values():
print(value)
八、嵌套字典
employees = {
"emp_001": {
"name": "Bob",
"skills": ["Python", "SQL"]
},
"emp_002": {
"name": "Charlie",
"salary": 8000
}
}
# 访问嵌套数据
print(employees["emp_001"]["skills"][0]) # 输出:Python
九、实用技巧
- 合并字典(Python 3.9+)
dict1 = {"a": 1}
dict2 = {"b": 2}
merged = dict1 | dict2 # {'a':1, 'b':2}
- 快速统计频率
text = "apple banana apple orange"
words = text.split()
counter = {}
for word in words:
counter[word] = counter.get(word, 0) + 1
# {'apple':2, 'banana':1, 'orange':1}
- 字典视图对象
keys_view = person.keys()
person["new_key"] = "value" # 视图对象会同步更新
十、注意事项
-
避免用可变对象作为键
-
使用
in
检查键是否存在:if "age" in person:
-
字典推导式比循环更高效
-
浅拷贝使用
copy()
方法,深拷贝需要import copy
通过掌握这些基础操作,您已经可以高效地使用字典处理各种数据存储和快速查找需求。字典非常适合存储需要键值关联的数据,如配置信息、JSON数据、属性集合等场景。