首页  >  文章  >  后端开发  >  如何使用转换后的键在 Python 中创建自定义字典?

如何使用转换后的键在 Python 中创建自定义字典?

Linda Hamilton
Linda Hamilton原创
2024-11-18 09:43:02146浏览

How Can I Create a Custom Dictionary in Python with Transformed Keys?

创建“完美”字典

在 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 具有多个优点:

  • 确保遵守dict接口。
  • 提供基本方法,例如__contains__、get() 和 setdefault() 免费。
  • 简化了 pickling 和 unpickling。

总之,实现 MutableMapping 和重写 _keytransform 提供了一种简洁有效的方法来创建具有定制键处理的自定义字典,同时保持标准字典的功能。

以上是如何使用转换后的键在 Python 中创建自定义字典?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn