Python案例如何字典新增键值对?

wen python案例 24

本文目录导读:

Python案例如何字典新增键值对?

  1. 直接赋值法(最常用)
  2. update() 方法
  3. setdefault() 方法(键不存在时才添加)
  4. 字典解包(Python 3.5+)
  5. 使用 |= 操作符(Python 3.9+)
  6. 实际应用案例
  7. 注意事项

在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}")

注意事项

  1. 键的唯一性:如果键已存在,直接赋值会覆盖原值
  2. 键的要求:字典的键必须是不可变类型(字符串、数字、元组等)
  3. 性能考虑:直接赋值通常性能最好
# 键覆盖示例
d = {"name": "张三"}
d["name"] = "李四"  # 覆盖原值
print(d)  # 输出: {'name': '李四'}

选择哪种方法取决于你的具体需求:

  • 添加单个键值对:直接赋值
  • 批量添加或更新多个:update()
  • 仅在新键时添加:setdefault()

抱歉,评论功能暂时关闭!