Maison >développement back-end >Tutoriel Python >Comment Python implémente-t-il le mappage ?
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.
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!