ホームページ  >  記事  >  バックエンド開発  >  変換されたキーを使用して Python でカスタム辞書を作成するにはどうすればよいですか?

変換されたキーを使用して Python でカスタム辞書を作成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-18 09:43:02147ブラウズ

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

「完璧な」辞書の作成

Python では、辞書と同じように動作するカスタム クラスを作成するのは複雑なタスクになる場合があります。ここでは、抽象基本クラス (ABC) を使用してこれを実現する方法を説明します。

MutableMapping ABC の実装

collections.abc モジュールは、MutableMapping を含むさまざまなデータ構造の ABC を提供します。 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() は無料です。
  • pickle 化と unpickle 化が簡素化されます。

要約すると、MutableMapping を実装し、_keytransform をオーバーライドすることで、標準辞書の機能を維持しながら、カスタマイズされたキー処理を備えたカスタム辞書。

以上が変換されたキーを使用して Python でカスタム辞書を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。