Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich ein geordnetes Standarddikt in Python?

Wie erstelle ich ein geordnetes Standarddikt in Python?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 18:28:02599Durchsuche

How to Create an Ordered Default Dict in Python?

Implementieren eines geordneten Standarddikts

Das in Python integrierte Sammlungsmodul stellt sowohl OrderedDict als auch Defaultdict bereit, die jeweils unterschiedliche Funktionen bieten. Ein OrderedDict behält die Einfügereihenfolge seiner Elemente bei, während ein Defaultdict automatisch Standardwerte für fehlende Schlüssel basierend auf einer angegebenen Factory-Funktion generiert.

Die Kraft von beidem kombinieren

Durch die Kombination der Fähigkeiten beider Datenstrukturen kann man ein geordnetes Standarddikt erstellen, das die Reihenfolge seiner Elemente beibehält und fehlende Schlüssel mit Standardwerten initialisiert. Dies kann durch Erweitern der OrderedDict-Klasse erreicht werden.

Benutzerdefinierte Klasse: DefaultOrderedDict

Die folgende benutzerdefinierte Klasse DefaultOrderedDict erbt von OrderedDict und fügt die Funktionalität zur Behandlung fehlender Schlüssel hinzu:

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

class DefaultOrderedDict(OrderedDict):
    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

    def __getitem__(self, key):
        try:
            return OrderedDict.__getitem__(self, key)
        except KeyError:
            return self.__missing__(key)

    def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError(key)
        self[key] = value = self.default_factory()
        return value</code>

Verwendung

Diese Klasse kann auf die gleiche Weise wie ein reguläres OrderedDict verwendet werden:

<code class="python">ordered_default_dict = DefaultOrderedDict(lambda: 0)
ordered_default_dict['key1'] = 1
ordered_default_dict['key2'] = 2</code>

Allerdings, wenn ein Schlüssel vorhanden ist nicht vorhanden, wird der Standardwert aus der Werksfunktion generiert:

<code class="python">print(ordered_default_dict['missing_key'])  # Output: 0</code>

Das obige ist der detaillierte Inhalt vonWie erstelle ich ein geordnetes Standarddikt in Python?. 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