【Python 字典】基础到进阶的用法
以下是 Python 中字典(dict
)的创建方法、常用属性和方法的总结,涵盖基础到进阶的用法:
一、字典的创建方法
1. 直接赋值(最常用)
person = {"name": "Alice", "age": 30, "city": "New York"}
2. 使用 dict()
构造函数
# 通过键值对创建
person = dict(name="Bob", age=25, city="London")# 通过二元组列表创建
data = [("name", "Charlie"), ("age", 35)]
person = dict(data)
3. 字典推导式
squares = {x: x**2 for x in range(1, 6)} # 结果:{1:1, 2:4, 3:9, 4:16, 5:25}
4. 合并多个字典(Python 3.9+)
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
merged = dict1 | dict2 # 结果:{'a':1, 'b':3, 'c':4}(后者覆盖前者)
二、常用属性与方法
1. 常用属性
.keys()
:返回所有键的视图keys = person.keys() # 输出:dict_keys(['name', 'age', 'city'])
.values()
:返回所有值的视图values = person.values() # 输出:dict_values(['Alice', 30, 'New York'])
.items()
:返回所有键值对的视图for key, value in person.items():print(f"{key}: {value}")
2. 基础操作
- 获取值
name = person["name"] # 直接键访问(键不存在时报错) age = person.get("age", 0) # 安全获取(不存在返回默认值0)
- 修改/添加键值对
person["age"] = 31 # 修改已有值 person["country"] = "USA" # 添加新键值对
- 删除键值对
del person["city"] # 删除键(不存在时报错) value = person.pop("age", 0) # 安全删除(返回删除的值或默认值) person.clear() # 清空字典
3. 进阶方法
.update()
:合并字典(覆盖重复键)person.update({"age": 40, "job": "Engineer"}) # 合并新数据
.setdefault()
:安全获取键值(若不存在则设置默认值)phone = person.setdefault("phone", "N/A") # 若"phone"不存在,添加并设为"N/A"
.copy()
:创建浅拷贝new_dict = person.copy() # 复制字典(非引用)
.popitem()
:删除并返回最后一对键值(Python 3.7+ 后为 LIFO)key, value = person.popitem() # 删除最后一个插入的键值对
4. 条件检查
# 检查键是否存在
if "name" in person:print("Name exists!")# 检查值是否存在
if "Alice" in person.values():print("Alice found in values")
三、实际场景示例
1. 统计词频
text = "apple banana apple orange banana apple"
words = text.split()
word_count = {}for word in words:word_count[word] = word_count.get(word, 0) + 1print(word_count) # 输出:{'apple':3, 'banana':2, 'orange':1}
2. 配置管理
config = {"host": "localhost","port": 8080,"debug": True,"plugins": ["logger", "monitor"]
}# 动态更新配置
config.update({"port": 8000, "timeout": 30})
3. 数据转换
user_ids = [101, 102, 103]
user_names = ["Alice", "Bob", "Charlie"]# 转换列表为字典
users = {id: name for id, name in zip(user_ids, user_names)}
# 输出:{101: 'Alice', 102: 'Bob', 103: 'Charlie'}
四、与其他数据结构的交互
1. 转换为 JSON
import json
json_data = json.dumps(person) # 字典转 JSON 字符串
2. 从列表创建字典
headers = ["name", "age", "city"]
values = ["Alice", 30, "New York"]person = dict(zip(headers, values)) # {'name':'Alice', 'age':30, 'city':'New York'}
五、注意点
- 键不可变:字典的键必须是不可变类型(如
str
、int
、tuple
)。 - 无序性(Python 3.7 前):Python 3.7+ 后字典保持插入顺序,但不要依赖此特性做排序。
- 效率:字典的查找复杂度为 O(1),适合高频查询操作。
掌握这些方法后,字典将成为你在 Python 中处理键值对数据的核心工具!