Maison >développement back-end >Tutoriel Python >Comment Python implémente-t-il le mappage ?

Comment Python implémente-t-il le mappage ?

(*-*)浩
(*-*)浩original
2019-06-26 15:57:064322parcourir

Le dictionnaire dict est une structure de données importante en Python, dans le dictionnaire, chaque clé correspond à une valeur. La relation entre les clés et les valeurs est appelée mappage. une valeur supérieure.

Comment Python implémente-t-il le mappage ?

La carte est un type de données plus général, plus précisément en Python, c'est un dictionnaire. (Apprentissage recommandé : Tutoriel vidéo Python)

Lors de l'utilisation d'un dictionnaire, nous devons nous poser une question : comment correspond-il aux valeurs via des clés ? il sait qui est la valeur de cette clé ?

Nous avons donc eu cette idée :

Utilisez une liste pour stocker les objets de valeur clé un par un. Lors de la recherche, parcourez simplement la liste et trouvez la clé que vous recherchez. retirer la valeur valeur dans l'objet.

Cette idée est très simple, nous pouvons la mettre en œuvre rapidement :

Ici, nous introduisons d'abord quelques classes de base abstraites associées, Mapping et MutableMapping, qui se trouvent dans le module de collections pour que nous puissions implémenter la carte de personnalisation classe. Le mappage inclut toutes les méthodes immuables dans dict, et l'extension MutableMapping inclut toutes les méthodes variables, mais aucune d'elles n'inclut les cinq méthodes spéciales principales : getitem, setitem, delitem, len et iter. En d’autres termes, notre objectif est de mettre en œuvre ces cinq méthodes principales afin que la structure des données puisse être utilisée.

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

La méthode ci-dessus est très simple, mais elle n'est pas très efficace. Nous devons parcourir la liste à chaque fois pour trouver l'index de la clé, donc la complexité temporelle est O(n).

Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn