Tables de hachage et cartes de hachage en Python
Publié: 2022-11-06Les données nécessitent plusieurs façons d'être accessibles ou stockées. Les tables de hachage et les cartes de hachage sont les meilleures structures de données pour implémenter cela en Python via le type de données intégré connu sous le nom de dictionnaire.
Un Hashmap ou une table de hachage dans la structure de données mappe les clés à ses paires de valeurs et utilise une fonction qui calcule toute valeur d'index contenant les éléments à insérer, rechercher ou supprimer. Cela facilite et accélère l'accès aux données. Les tables de hachage stockent généralement des paires clé-valeur et utilisent la fonction de hachage pour générer une clé.
Dans cet article, vous apprendrez ce que sont les tables de hachage et les cartes de hachage et comment elles sont implémentées en Python.
Apprenez la science des données pour prendre l'avantage sur vos concurrents
Qu'est-ce qu'une table de hachage ou un Hashmap Python ?
Une table de hachage ou hashmap Python est une structure de données indexée. Il utilise des fonctions de hachage pour calculer un index en utilisant une clé dans un tableau d'emplacements ou de compartiments. Vous pouvez mapper sa valeur sur un compartiment à l'aide de l'index correspondant, et la clé est immuable et unique.
Les hashmaps sont similaires à une armoire à tiroirs étiquetée avec les choses qu'ils stockent. Par exemple, les hashmaps peuvent stocker des informations sur l'utilisateur telles que le prénom et le nom, etc., dans le compartiment.
La fonction de hachage fait partie intégrante de la mise en œuvre d'un hashmap. Il utilise la clé et la traduit en index du compartiment dans la liste des compartiments. Le hachage idéal produit un index séparé pour chaque clé. Cependant, gardez à l'esprit que des collisions peuvent se produire. Lorsque le hachage produit un index déjà existant, un seau pour plusieurs valeurs peut être facilement utilisé en rehachant ou en ajoutant une liste. En Python, un exemple de cartes de hachage est les dictionnaires.
Examinons en détail l'implémentation du hashmap pour apprendre à personnaliser et à créer des structures de données pour l'optimisation de la recherche.
Carte de hachage en Python
Le hashmap inclut les fonctions suivantes :
- set_val(key, value) : cette fonction est utilisée pour insérer une paire clé-valeur dans la carte de hachage. S'il existe déjà une valeur dans la carte de hachage, vous devez mettre à jour la valeur.
- get_val(key) : cette fonction renvoie la valeur de la clé spécifiée qui est mappée ou "Aucun enregistrement trouvé" si cette carte n'a pas de mappage pour la clé.
- delete_val(key) : Supprime le mappage pour la clé particulière si le hashmap a le mappage pour la clé.
Mise en œuvre:-
table de hachage de classe :
# Créer une liste de seaux vides de taille donnée
def __init__(soi, taille):
soi.taille = taille
self.hash_table = self.create_buckets()
def create_buckets(self):
renvoie [[] pour _ dans la plage (self.size)]
# Insérer des valeurs dans la carte de hachage
def set_val(self, key, val):
# Récupère l'index de la clé
# en utilisant la fonction de hachage
hashed_key = hachage (clé) % self.size
# Récupère le bucket correspondant à l'index
bucket = self.hash_table[hashed_key]
clé_trouvée = Faux
pour index, record in enumerate(bucket):
clé_enregistrement, valeur_enregistrement = enregistrement
# vérifie si le bucket a la même clé que
# la clé à insérer
si clé_enregistrement == clé :
clé_trouvée = Vrai
Pause
# Si le bucket a la même clé que la clé à insérer,
# Mettre à jour la valeur de la clé
# Sinon, ajoutez la nouvelle paire clé-valeur au bucket
si clé_trouvée :
bucket[index] = (clé, valeur)
autre:
bucket.append((clé, val))
# Renvoie la valeur recherchée avec une clé spécifique
def get_val(self, key):
# Obtenez l'index de la clé en utilisant
# fonction de hachage
hashed_key = hachage (clé) % self.size
# Récupère le bucket correspondant à l'index
bucket = self.hash_table[hashed_key]
clé_trouvée = Faux
pour index, record in enumerate(bucket):
clé_enregistrement, valeur_enregistrement = enregistrement
# vérifie si le bucket a la même clé que
# la clé recherchée
si clé_enregistrement == clé :
clé_trouvée = Vrai
Pause
# Si le compartiment a la même clé que la clé recherchée,
# Renvoie la valeur trouvée
# Sinon, indiquez qu'aucun enregistrement n'a été trouvé
si clé_trouvée :
retourner record_val
autre:
renvoie "Aucun enregistrement trouvé"
# Supprimer une valeur avec une clé spécifique
def delete_val(soi, clé):
# Obtenez l'index de la clé en utilisant
# fonction de hachage
hashed_key = hachage (clé) % self.size
# Récupère le bucket correspondant à l'index
bucket = self.hash_table[hashed_key]
clé_trouvée = Faux
pour index, record in enumerate(bucket):
clé_enregistrement, valeur_enregistrement = enregistrement
# vérifie si le bucket a la même clé que
# la clé à supprimer
si clé_enregistrement == clé :
clé_trouvée = Vrai
Pause
si clé_trouvée :
bucket.pop(index)
revenir
# Pour imprimer les éléments de la carte de hachage
def __str__(soi) :
renvoie "".join(str(item) pour l'item dans self.hash_table)
table de hachage = table de hachage (50)
# insérer des valeurs
hash_table.set_val([email protected]', 'une valeur')
impression (table de hachage)
imprimer()
hash_table.set_val('[email protected]', 'une autre valeur')
impression (table de hachage)
imprimer()
# rechercher/accéder à un enregistrement avec clé
print(hash_table.get_val('[email protected]'))
imprimer()
# supprimer ou supprimer une valeur
hash_table.delete_val('[email protected]')
impression (table de hachage)
Production:-
[][][][][][][][][][][][][][][][][][][][] ([email protected]', 'une certaine valeur') ][][][][][][][][][][][][][][][][][][][][][] [][][][]
[][][][][][][][][][][][][][][][][][][][] ([email protected]', 'une valeur') ][][][][][][('[email protected]', 'une autre valeur')][][][][][][][][][ ][][][][][][][][][][][][]
Une autre valeur
[][][][][][][][][][][][][][][][][][][][] ([email protected]', 'une certaine valeur') ][][][][][][][][][][][][][][][][][][][][][] [][][][]
Consultez nos programmes US - Data Science
Programme de certificat professionnel en science des données et analyse commerciale | Master of Science en science des données | Master of Science en science des données | Programme de certificat avancé en science des données |
Programme exécutif PG en science des données | Bootcamp de programmation Python | Programme de certificat professionnel en science des données pour la prise de décision commerciale | Programme avancé en science des données |
Exécution d'opérations sur des tables de hachage à l'aide de dictionnaires :
De nombreuses opérations peuvent être effectuées en Python sur des tables de hachage via des dictionnaires. Ils sont les suivants : -
- Accéder aux valeurs
- Mise à jour des valeurs
- Suppression d'un élément
Accéder aux valeurs :
Vous pouvez facilement accéder aux valeurs d'un dictionnaire des manières suivantes : -
- Utiliser des valeurs clés
- Utilisation des fonctions
- Implémentation de la boucle for
Utilisation de valeurs clés :
Vous pouvez accéder aux valeurs du dictionnaire en utilisant les valeurs clés comme ci-dessous : -
mon_dict={'Elsa' : '001' , 'Anna' : '002' , 'Olaf' : '003'} mon_dict['Anna'] |
Sortie : '002'
Utilisation des fonctions :
Il existe de nombreuses fonctions intégrées telles que get(), keys(), values(), etc.
mon_dict={'Elsa' : '001' , 'Anna' : '002' , 'Olaf' : '003'} print(my_dict.keys()) print(my_dict.values()) print(my_dict.get('Elsa')) |
Production:-
dict_keys(['Elsa', 'Anna', 'Olaf'])
dict_values(['001', '002', '003'])
001
Implémentation de la boucle for :
La boucle vous donne accès aux paires clé-valeur d'un dictionnaire en itérant dessus. Par exemple:
mon_dict={'Elsa' : '001' , 'Anna' : '002' , 'Olaf' : '003'} print("Toutes les touches") pour x dans my_dict : print(x) #imprime les clés print("Toutes les valeurs") pour x dans my_dict.values() : print(x) #imprime les valeurs print("Toutes les clés et valeurs") pour x,y dans my_dict.items() : print(x, ":" , y) #imprime les clés et les valeurs |
Production:
Toutes les clés
Elsa
Anne
Olaf
Toutes les valeurs
001
002
003
Toutes les clés et valeurs
Elsa : 001
Anna : 002
Olaf : 003
Mise à jour des valeurs :
Les dictionnaires sont des types de données mutables qui peuvent être mis à jour si nécessaire. Vous pouvez procéder comme suit : -
mon_dict={'Elsa' : '001' , 'Anna' : '002' , 'Olaf' : '003'} my_dict['Olaf'] = '004' #Mise à jour de la valeur de Dave my_dict['Kristoff'] = '005' #ajout d'une paire clé-valeur imprimer (my_dict) |
Sortie : {'Elsa' : '001' , 'Anna' : '002' , 'Olaf' : '004', 'Kristoff' : '005'}
Suppression d'éléments d'un dictionnaire :
Vous pouvez supprimer des éléments d'un dictionnaire avec des fonctions telles que del(), pop(), popitem(), clear(), etc. Par exemple :
mon_dict={'Elsa' : '001' , 'Anna' : '002' , 'Olaf' : '003'} del my_dict['Elsa'] #supprime la paire clé-valeur de 'Elsa' my_dict.pop('Anna') #supprime la valeur de 'Anna' my_dict.popitem() #supprime le dernier élément inséré imprimer (my_dict) |
Sortie : {'Olaf' : '003'}
Conclusion
Nous pouvons facilement conclure que les hashmaps et la table de hachage Python font partie intégrante pour un accès plus facile et plus rapide aux données pertinentes. C'est un outil précieux pour les professionnels de la science des données comme les data scientists et les analystes de données. Si vous souhaitez en savoir plus sur le domaine de la science des données, upGrad propose le meilleur programme de certificat professionnel en science des données pour la prise de décision commerciale .
Qu'est-ce qu'un hashmap, Python, et une table de hachage, Python ?
Une table de hachage aide à stocker des paires clé-valeur où une clé est générée à l'aide d'une fonction de hachage. Les implémentations de hashmaps ou de tables de hachage en Python sont effectuées avec des dictionnaires intégrés.
Quelle est la différence entre une hashmap et une table de hachage Python ?
Une Hashmap n'est pas synchronisée, mais une Hashtable est synchronisée. Cela signifie que les tables de hachage sont thread-safe et peuvent être partagées entre de nombreux threads, mais HashMap nécessite une synchronisation appropriée avant d'être partagée.
La carte est-elle une table de hachage ?
Une table de hachage Python, également appelée carte de hachage, est une structure de données mappant des clés à des valeurs. Il utilise la technique de hachage.