Tables de hachage et cartes de hachage en Python

Publié: 2022-11-06

Les 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

Table des matières

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.