You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一行代码给Python字典键赋值,访问时触发指定错误?

一行代码实现带错误触发键的字典

无需子类化dict,通过替换字典实例的__getitem__方法即可实现需求,一行代码搞定:

import types; d = {"foo": "bar", "baz": "rat"}; d.__getitem__ = types.MethodType(lambda self, key: self.get(key) if key != "no-no" else (_ for _ in ()).throw(ValueError("This is a no-no")), d)

效果验证

>>> d["foo"]
'bar'
>>> d["baz"]
'rat'
>>> d["no-no"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
ValueError: This is a no-no

原理说明

  • 先创建包含普通键值对的字典d
  • 通过types.MethodType给d实例绑定自定义的__getitem__方法:
    • 访问普通键时,用self.get(key)返回正常值
    • 访问"no-no"键时,借助空生成器的throw()方法直接抛出指定异常(生成器表达式(_ for _ in ())是一个空生成器,调用throw()会立即触发传入的异常)

内容的提问来源于stack exchange,提问作者mivkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:10:02