02
列表 / 字典操作 · 3 / 6
2.3 字典的增删改查
💡 推理参数(model、temperature、max_tokens...)就是一个 dict
2.3 字典的增删改查
dict = 键值对集合
cfg = {"model": "qwen2.5-7b", "temperature": 0.7}
cfg["model"] # 查询 → "qwen2.5-7b"
cfg.get("top_p", 1.0) # 安全查询,没找到给默认值 1.0
cfg["top_p"] = 0.9 # 新增 / 修改
cfg.update({"top_p": 0.95, "max_tokens": 256}) # 批量更新
del cfg["top_p"] # 删除
cfg.pop("top_p", None) # 安全删除,没找到返回 None
"model" in cfg # 成员检查
for k, v in cfg.items(): # 遍历
print(k, v)
核心区别
cfg["k"]找不到会抛KeyErrorcfg.get("k")找不到返回None
推理代码里几乎都用 .get(),因为配置经常缺字段。
示范
cfg = {"model": "qwen2.5-7b", "temperature": 0.7}
max_tokens = cfg.get("max_tokens", 512)
print(max_tokens)
for k, v in cfg.items():
print(f"{k} = {v}")
✍️ 练习
从下面这个 dict 出发:
cfg = {"model": "qwen2.5-7b", "temperature": 0.7, "max_tokens": 512}
- 用
.get()安全取出top_p,没找到就用默认值0.9 - 用
["top_p"] = ...把上一步的值写回 cfg - 用
.update()一次性写入{"top_k": 50, "repetition_penalty": 1.1} - 用
for循环打印 cfg 的所有 key 和 value
💡 思路提示
点开看提示
- 变量可以临时存一下,反复用
cfg["top_p"] = cfg.get("top_p", 0.9)等价于“先取,没有就用默认”update不会清空原有字段,只覆盖 / 新增
✅ 参考解法
写不出来再打开
cfg = {"model": "qwen2.5-7b", "temperature": 0.7, "max_tokens": 512}
cfg["top_p"] = cfg.get("top_p", 0.9)
cfg.update({"top_k": 50, "repetition_penalty": 1.1})
for k, v in cfg.items():
print(f"{k} = {v}")
🔍 进阶思考
什么时候用 ["k"]、什么时候用 .get("k")?
- 必填字段用
["k"](缺了就该报错,提醒调用方修) - 可选用
.get(缺了用默认)