Maison >développement back-end >Tutoriel Python >Comment puis-je créer un dictionnaire personnalisé en Python avec des clés transformées ?

Comment puis-je créer un dictionnaire personnalisé en Python avec des clés transformées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-18 09:43:02232parcourir

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

Création d'un dict "parfait"

En Python, créer une classe personnalisée qui se comporte de la même manière qu'un dictionnaire peut être une tâche complexe. Voici comment y parvenir avec les classes de base abstraites (ABC).

Implémentation de MutableMapping ABC

Le module collections.abc fournit des ABC pour diverses structures de données, y compris MutableMapping. En implémentant MutableMapping, nous pouvons créer un objet avec la même interface qu'un dict. Voici une implémentation minimaliste :

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

Personnalisation de la transformation de clé

En remplaçant la méthode _keytransform, nous pouvons appliquer des transformations arbitraires aux clés. Par exemple, pour forcer les touches minuscules :

class MyTransformedDict(TransformedDict):

    def _keytransform(self, key):
        return key.lower()

Avantages de l'ABC

La mise en œuvre de l'ABC offre plusieurs avantages :

  • Garantit le respect des l'interface dict.
  • Fournit gratuitement des méthodes essentielles telles que __contains__, get() et setdefault().
  • Simplifie le décapage et le décapage.

En résumé, l'implémentation de MutableMapping et la substitution de _keytransform fournissent un moyen concis et efficace de créer un dict personnalisé avec une gestion des clés sur mesure tout en conservant la fonctionnalité d'un dict standard.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn