Heim > Artikel > Backend-Entwicklung > Wie kann ich in Python ein benutzerdefiniertes Wörterbuch mit transformierten Schlüsseln erstellen?
Ein „perfektes“ Diktat erstellen
In Python kann das Erstellen einer benutzerdefinierten Klasse, die sich genauso verhält wie ein Wörterbuch, eine komplexe Aufgabe sein. Hier erfahren Sie, wie Sie dies mit abstrakten Basisklassen (ABCs) erreichen.
Implementieren des MutableMapping-ABC
Das Modul „collections.abc“ stellt ABCs für verschiedene Datenstrukturen bereit, einschließlich MutableMapping. Durch die Implementierung von MutableMapping können wir ein Objekt mit derselben Schnittstelle wie ein Diktat erstellen. Hier ist eine minimalistische Implementierung:
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
Anpassen der Schlüsseltransformation
Durch Überschreiben der _keytransform-Methode können wir beliebige Transformationen auf Schlüssel anwenden. Um beispielsweise Kleinbuchstaben zu erzwingen:
class MyTransformedDict(TransformedDict): def _keytransform(self, key): return key.lower()
Vorteile von ABCs
Die Implementierung von ABCs bietet mehrere Vorteile:
Zusammenfassend: Das Implementieren von MutableMapping und das Überschreiben von _keytransform bietet eine präzise und effektive Möglichkeit, ein benutzerdefiniertes Diktat mit maßgeschneiderter Schlüsselbehandlung zu erstellen und gleichzeitig die Funktionalität eines Standarddikts beizubehalten.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python ein benutzerdefiniertes Wörterbuch mit transformierten Schlüsseln erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!