Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert Python die Zuordnung?

Wie implementiert Python die Zuordnung?

(*-*)浩
(*-*)浩Original
2019-06-26 15:57:064260Durchsuche

Dictionary dict ist eine wichtige Datenstruktur in Python. Die Beziehung zwischen Schlüsseln und Werten wird auch als Zuordnung bezeichnet ein überlegener Wert.

Wie implementiert Python die Zuordnung?

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!

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