Dictionary dict ist eine wichtige Datenstruktur in Python. Die Beziehung zwischen Schlüsseln und Werten wird auch als Zuordnung bezeichnet ein überlegener Wert.
Map ist ein allgemeinerer Datentyp, insbesondere in Python ist es ein Wörterbuch. (Empfohlenes Lernen: Python-Video-Tutorial)
Bei der Verwendung eines Wörterbuchs müssen wir eine Frage haben: Wie wird es über Schlüssel auf Werte abgebildet? Wissen Sie, wer der Wert dieses Schlüssels ist?
Also kamen wir auf diese Idee:
Verwenden Sie eine Liste, um Schlüsselwertobjekte einzeln zu speichern. Durchsuchen Sie bei der Suche einfach die Liste und finden Sie den Schlüssel, den Sie suchen. Nehmen Sie den Wertwert im Objekt heraus.
Diese Idee ist sehr einfach, wir können sie schnell umsetzen:
Hier stellen wir zunächst einige verwandte abstrakte Basisklassen vor, Mapping und MutableMapping, die sich im Sammlungsmodul befinden, damit wir die Anpassungskarte implementieren können Klasse. Mapping umfasst alle unveränderlichen Methoden in dict, und die MutableMapping-Erweiterung umfasst alle variablen Methoden, aber keine von ihnen umfasst die fünf zentralen Spezialmethoden: getitem, setitem, delitem, len und iter. Mit anderen Worten: Unser Ziel ist es, diese fünf Kernmethoden so zu implementieren, dass die Datenstruktur genutzt werden kann.
from collections import MutableMapping class MyMap(MutableMapping): class item(): def __init__(self,key,value): self.key = key self.value = value def __eq__(self, other): return self.key == other.key def __ne__(self, other): return self.key != other.key def __init__(self): self.table = [] def __getitem__(self, item): for i in self.table: if i.key == item: return i.value raise KeyError('Key Error: '+ repr(item)) def __setitem__(self, key, value): for i in self.table: if i.key == key: i.value = value return self.table.append(self.item(key,value)) def __delitem__(self, key): for n,i in enumerate(self.table): if i.key == key: self.pop(n) return raise KeyError('Key Error: '+ repr(key)) def __len__(self): return len(self.table) def __iter__(self): for i in self.table: yield i.key
Die obige Methode ist sehr einfach, aber nicht sehr effizient. Wir müssen die Liste jedes Mal durchlaufen, um den Index des Schlüssels zu finden, daher beträgt die Zeitkomplexität O(n).
Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonWie implementiert Python die Zuordnung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!