Wie erstelle ich ein geordnetes Standarddikt in Python?

Linda Hamilton
Freigeben: 2024-10-29 18:28:02
Original
515 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!