Comment puis-je créer un dictionnaire ordonné avec des valeurs par défaut en Python ?

Linda Hamilton
Libérer: 2024-10-28 03:37:30
original
294 Les gens l'ont consulté

How can I create an ordered dictionary with default values in Python?

Combiner OrderedDict et defaultdict pour un dict par défaut ordonné

OrderedDict et defaultdict sont deux structures de données puissantes du module de collections de Python. OrderedDict conserve l'ordre de ses éléments, tandis que defaultdict fournit une valeur par défaut pour les clés manquantes. Cependant, combiner ces fonctionnalités dans une seule structure de données peut s'avérer difficile.

Implémentation personnalisée à l'aide de DefaultOrderedDict

Une solution possible consiste à créer une classe personnalisée appelée DefaultOrderedDict qui hérite de OrderedDict et ajoute une fonctionnalité de valeur par défaut. Voici une implémentation inspirée d'une réponse Stack Overflow :

<code class="python">from collections import OrderedDict, Callable

class DefaultOrderedDict(OrderedDict):
    # Source: http://stackoverflow.com/a/6190500/562769
    def __init__(self, default_factory=None, *a, **kw):
        if (default_factory is not None and
           not isinstance(default_factory, Callable)):
            raise TypeError('first argument must be callable')
        OrderedDict.__init__(self, *a, **kw)
        self.default_factory = default_factory

    # Override __getitem__ to handle missing keys
    def __getitem__(self, key):
        try:
            return OrderedDict.__getitem__(self, key)
        except KeyError:
            return self.__missing__(key)

    # Raise KeyError if no default factory is provided
    def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError(key)
        self[key] = value = self.default_factory()
        return value

    # ... (additional methods and overrides for copy, deepcopy, and repr)</code>
Copier après la connexion

Cette classe DefaultOrderedDict combine les fonctionnalités de OrderedDict et de defaultdict, permettant un accès ordonné aux éléments et fournissant une valeur par défaut pour les clés manquantes.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!