Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Python ein geordnetes Wörterbuch mit Standardwerten erstellen?

Wie kann ich in Python ein geordnetes Wörterbuch mit Standardwerten erstellen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-28 03:37:30285Durchsuche

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

Kombinieren von OrderedDict und defaultdict für ein Ordered Default Dict

OrderedDict und defaultdict sind zwei leistungsstarke Datenstrukturen aus dem Collections-Modul von Python. OrderedDict behält die Reihenfolge seiner Elemente bei, während defaultdict einen Standardwert für fehlende Schlüssel bereitstellt. Die Kombination dieser Funktionen in einer einzigen Datenstruktur kann jedoch eine Herausforderung sein.

Benutzerdefinierte Implementierung mit DefaultOrderedDict

Eine mögliche Lösung besteht darin, eine benutzerdefinierte Klasse namens DefaultOrderedDict zu erstellen, die von erbt OrderedDict und fügt Standardwertfunktionen hinzu. Hier ist eine Implementierung, die von einer Stack Overflow-Antwort inspiriert wurde:

<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>

Diese DefaultOrderedDict-Klasse kombiniert die Funktionalität von OrderedDict und defaultdict, ermöglicht geordneten Zugriff auf Elemente und stellt einen Standardwert für fehlende Schlüssel bereit.

Das obige ist der detaillierte Inhalt vonWie kann ich in Python ein geordnetes Wörterbuch mit Standardwerten erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn