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

Linda Hamilton
Libérer: 2024-11-18 09:43:02
original
145 Les gens l'ont consulté

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
Copier après la connexion

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal