创建“完美”字典
在 Python 中,创建与字典行为相同的自定义类可能是一项复杂的任务。以下是如何使用抽象基类 (ABC) 来实现它。
实现 MutableMapping ABC
collections.abc 模块为各种数据结构提供 ABC,包括 MutableMapping。通过实现 MutableMapping,我们可以创建一个与 dict 具有相同接口的对象。这是一个极简实现:
from collections.abc import MutableMapping class TransformedDict(MutableMapping): def __init__(self, *args, **kwargs): self.store = dict() self.update(dict(*args, **kwargs)) def __getitem__(self, key): return self.store[self._keytransform(key)] def __setitem__(self, key, value): self.store[self._keytransform(key)] = value def __delitem__(self, key): del self.store[self._keytransform(key)] def __iter__(self): return iter(self.store) def __len__(self): return len(self.store) def _keytransform(self, key): return key
自定义键转换
通过重写 _keytransform 方法,我们可以对键应用任意转换。例如,要强制使用小写键:
class MyTransformedDict(TransformedDict): def _keytransform(self, key): return key.lower()
ABC 的好处
实施 ABC 具有多个优点:
总之,实现 MutableMapping 和重写 _keytransform 提供了一种简洁有效的方法来创建具有定制键处理的自定义字典,同时保持标准字典的功能。
以上是如何使用转换后的键在 Python 中创建自定义字典?的详细内容。更多信息请关注PHP中文网其他相关文章!