兵器篇-Day29 字典取值与修改

0 次阅读 2026-10-17 19:49

📖 知识点

1. 两种取值方式

方式①:字典[key]

  • 键存在:返回对应 value
  • 键不存在:直接抛出 KeyError 程序崩溃
stu = {"name":"阿凯", "level":3}
print(stu["name"])

方式②:字典.get(key, 默认值) ✅推荐安全写法

  • 键存在:返回对应 value
  • 键不存在:不会报错,返回 None;你也可以自定义默认值
stu = {"name":"阿凯", "level":3}
print(stu.get("name"))
print(stu.get("score", 0)) # 没有score,返回默认值0

2. 修改 / 新增键值对

语法:字典[key] = 值

  • 如果 key已经存在 → 修改原来的值
  • 如果 key不存在 → 新增一组键值对
stu = {"name":"阿凯", "level":3}
stu["level"] = 4 # key存在,修改
stu["skill"] = "循环" # key不存在,新增
print(stu)
# {'name': '阿凯', 'level': 4, 'skill': '循环'}

3. 删除字典键值对 del

del 字典[key]:删除指定键值对,键不存在会报错

del stu["skill"]
print(stu)

⚠️ 避坑提醒

  1. get() 不会修改原字典,只是读取数据
  2. 字典 key 不能是列表这类可变类型
  3. 重复赋值同一个 key,旧数据会被直接覆盖丢失

⚔️ Kata 实战任务

任务:学员修炼档案更新 需求:

  1. 创建初始字典 stu = {"name":"阿凯", "level":3, "skill":"列表"}
  2. 打印原始字典
  3. 使用 get() 获取 name 的值并打印;用 get 获取 score,不存在则默认返回 0
  4. 修改 level 为 4
  5. 新增键值对 score: 88
  6. 删除 skill 键
  7. 打印最终更新后的字典

预期输出示例:

原始学员档案: {'name': '阿凯', 'level': 3, 'skill': '列表'}
学员姓名: 阿凯
学员分数: 0
更新后的学员档案: {'name': '阿凯', 'level': 4, 'score': 88}

✅ 参考代码

# 创建初始字典
stu = {"name": "阿凯", "level": 3, "skill": "列表"}
print("原始学员档案:", stu)

# get安全取值
name = stu.get("name")
score = stu.get("score", 0)
print("学员姓名:", name)
print("学员分数:", score)

# 修改已有key
stu["level"] = 4
# 新增key
stu["score"] = 88
# 删除键值对
del stu["skill"]

print("更新后的学员档案:", stu)

🧠 思考题

  1. stu.get("score",0) 拿到默认值 0,会不会自动把 "score":0 写入字典?
  2. 什么时候优先使用 get(),什么时候直接 stu[key] 取值?