本文目录导读:

在Python中,字典新增键值对有以下几种常用方法:
直接赋值法(最常用)
# 创建一个空字典
my_dict = {}
# 新增键值对
my_dict["name"] = "张三"
my_dict["age"] = 25
my_dict["city"] = "北京"
print(my_dict) # 输出: {'name': '张三', 'age': 25, 'city': '北京'}
update() 方法
# 方法1:传入字典
my_dict = {"name": "张三"}
my_dict.update({"age": 25, "city": "北京"})
print(my_dict) # 输出: {'name': '张三', 'age': 25, 'city': '北京'}
# 方法2:传入键值对
my_dict.update(score=95, grade="A")
print(my_dict) # 输出: {'name': '张三', 'age': 25, 'city': '北京', 'score': 95, 'grade': 'A'}
setdefault() 方法(键不存在时才添加)
my_dict = {"name": "张三"}
# 键不存在,添加新键值对
result = my_dict.setdefault("age", 25)
print(my_dict) # 输出: {'name': '张三', 'age': 25}
print(result) # 输出: 25
# 键已存在,不进行添加
result2 = my_dict.setdefault("name", "李四")
print(my_dict) # 输出: {'name': '张三', 'age': 25}(name未被修改)
print(result2) # 输出: 张三(返回原值)
字典解包(Python 3.5+)
# 合并两个字典
dict1 = {"name": "张三", "age": 25}
dict2 = {"city": "北京", "score": 95}
merged_dict = {**dict1, **dict2}
print(merged_dict) # 输出: {'name': '张三', 'age': 25, 'city': '北京', 'score': 95}
# 也可以在创建时添加
new_dict = {**dict1, "grade": "A"}
print(new_dict) # 输出: {'name': '张三', 'age': 25, 'grade': 'A'}
使用 |= 操作符(Python 3.9+)
my_dict = {"name": "张三"}
my_dict |= {"age": 25, "city": "北京"}
print(my_dict) # 输出: {'name': '张三', 'age': 25, 'city': '北京'}
实际应用案例
# 案例:学生信息管理系统
student = {
"id": "2024001",
"name": "张三"
}
# 1. 添加单个信息
student["age"] = 20
print(f"添加年龄后: {student}")
# 2. 批量添加信息
student.update({
"score": 95,
"grade": "A",
"city": "北京"
})
print(f"批量添加后: {student}")
# 3. 安全添加(检查是否已存在)
if "phone" not in student:
student["phone"] = "13800138000"
print(f"安全添加后: {student}")
# 4. 使用setdefault添加默认值
student.setdefault("email", "default@school.com")
print(f"添加默认邮箱: {student}")
注意事项
- 键的唯一性:如果键已存在,直接赋值会覆盖原值
- 键的要求:字典的键必须是不可变类型(字符串、数字、元组等)
- 性能考虑:直接赋值通常性能最好
# 键覆盖示例
d = {"name": "张三"}
d["name"] = "李四" # 覆盖原值
print(d) # 输出: {'name': '李四'}
选择哪种方法取决于你的具体需求:
- 添加单个键值对:直接赋值
- 批量添加或更新多个:update()
- 仅在新键时添加:setdefault()