推理基础设施 · Python2.3 字典的增删改查
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"] 找不到会抛 KeyError
  • cfg.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}
  1. .get() 安全取出 top_p,没找到就用默认值 0.9
  2. ["top_p"] = ... 把上一步的值写回 cfg
  3. .update() 一次性写入 {"top_k": 50, "repetition_penalty": 1.1}
  4. for 循环打印 cfg 的所有 key 和 value

💡 思路提示

点开看提示
  1. 变量可以临时存一下,反复用
  2. cfg["top_p"] = cfg.get("top_p", 0.9) 等价于“先取,没有就用默认”
  3. 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(缺了用默认)