logo

Comment concevoir un hashset en Python ?

Comme nous le savons, HashSet est une classe célèbre en Java. HashSet est utilisé pour stocker les valeurs à l'aide d'une table de hachage. Dans ce didacticiel, nous aborderons HashSet en Python. Nous apprendrons également comment concevoir HashSet en Python.

Un HashSet est une structure de données fondamentale en programmation, que l'on trouve couramment dans des langages tels que Java. Il appartient au Java Collections Framework et sert d’implémentation de l’interface définie. La particularité d'un HashSet est sa capacité à stocker des éléments de manière à faciliter une vérification efficace de l'existence d'éléments spécifiques et à garantir l'unicité au sein de l'ensemble. Contrairement aux structures telles que les listes, un HashSet ne maintient aucun ordre spécifique entre ses éléments.

L’une des caractéristiques clés d’un HashSet est sa garantie d’unicité ; il n'autorise pas les éléments en double. Les opérations telles que l'ajout, la suppression et la vérification de la présence d'éléments ont généralement des performances moyennes en temps constant, ce qui en fait un choix efficace pour de telles tâches. Cependant, il est essentiel de noter que l'ordre des éléments dans un HashSet n'est pas garanti.

Principales caractéristiques:

Unicité: Un HashSet n'autorise pas les éléments en double. Il utilise la méthode equals() pour vérifier les doublons, garantissant ainsi que chaque élément de l'ensemble est unique.

Pas de commande: Les éléments d'un HashSet ne sont stockés dans aucun ordre particulier. Si vous devez conserver l'ordre des éléments, vous pouvez envisager d'utiliser un LinkedHashSet, qui conserve l'ordre d'insertion.

Structure de données sous-jacente : En interne, un HashSet utilise une table de hachage pour stocker les éléments. Cela permet une complexité moyenne en temps constant pour les opérations de base telles que l'ajout, la suppression et le contenu.

Éléments nuls : Un HashSet autorise un élément nul. Si vous essayez d'ajouter un élément null en double, il remplacera celui existant.

Introduction

Nous pouvons concevoir HashSet sans utiliser de bibliothèques de tables de hachage. Vous trouverez ci-dessous les multiples fonctions différentes -

ajouter(x) - La méthode add(x) est principalement utilisée pour insérer une valeur x dans le HashSet.

caractère à chaîne java

contient(x) - La méthode contain(x) est principalement utilisée pour vérifier si une valeur x est présente ou non dans le HashSet.

supprimer(x) - La méthode remove(x) est principalement utilisée pour supprimer x du HashSet. Si le HashSet n’a aucune valeur, il ne fera rien.

Comprenons ces méthodes par l'exemple ci-dessous.

Tout d’abord, initialisez le HashSet et appelez la fonction add(1). Cela ajoutera 1 dans l'ensemble de hachage. Appelez add(3), qui ajoutera 3, puis appelez contain(1). Il vérifiera si 1 est présent ou non dans le jeu de hachage. Nous appelons maintenant contain(2), add(2), contain(2), remove(2), contain(2).

La sortie sera renvoyée comme vrai pour 1 est présent, faux pour 2 n'est pas présent, vrai pour 2 est présent, faux pour 2 n'est pas présent, respectivement.

Opérations de base de HashSet en Python

Nous pouvons effectuer certaines opérations de base dans HashSet en utilisant les méthodes suivantes. Comprenons ces méthodes.

Ajout de nouvelles valeurs dans HashSet

Dans l'exemple ci-dessous, nous ajouterons la valeur dans le jeu de hachage à l'aide de la fonction add(). La fonction add() ajoute la valeur une à la fois. Voyons le code suivant.

Exemple -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) 

Sortir:

 Adding value: 2 Adding value: 7 Adding value: 6 

Suppression de valeurs dans HashSet

Nous pouvons supprimer la valeur existante à l’aide de la fonction Remove(). Comprenons le code suivant.

Exemple -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6) 

Sortir:

 Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6 

Vérifier si des valeurs existent dans HashSet

Dans cet exemple, nous allons montrer comment vérifier si une valeur particulière existe ou n'utilise pas le contient() fonction. Comprenons le code suivant.

Exemple -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2) 

Sortir:

mon flixeur
 Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2 

Algorithme pour le HashSet en Python

Dans la première étape, nous définissons une structure de données appelée HashList. Ensuite, nous initialisons une liste vide comme une nouvelle_liste . Ensuite, nous définissons une fonction update() dans laquelle found stockera une valeur booléenne False. Maintenant, nous utilisons la boucle for pour chaque index I et K. si la clé est la même que « k », alors nouvelle_liste[i]=k et la valeur trouvée est définie sur True. La valeur sera insérée en fin de liste si aucune valeur n'est trouvée.

L'étape suivante consiste à définir la fonction get(), que nous utiliserons pour la boucle, et si la valeur de k est la même que la clé, le résultat sera True ; sinon, Faux. Si la clé est la même que « k », supprimez la valeur de la liste. Nouvelle liste. Le même processus sera appliqué dans la fonction Remove().

Maintenant, nous allons créer la classe Main HashSet. Cette classe déclarera la fonction d'initialisation où la valeur key_space = 2096. La hash_table aura une liste d'objets de type new_list de taille espace_clé . Ensuite, nous créerons la fonction add(), dans laquelle hash_key = clé%key_space et mettez à jour la clé de hash_table[hash_key]. Après cela, nous appellerons le supprimer la fonction , dans lequel hash_key = key % key_space, et supprimez la clé de hash_table[hash_key]. Après cela, nous appellerons le contient une fonction , dans lequel

hash_key = key % key_space, et obtenez la clé de hash_table[hash_key].

Voyons l'algorithme d'implémentation par étapes.

Algorithme -

  • Créez une structure de données appelée HashSet, initialisez-la comme ci-dessous
  • nouvelle_liste = []
  • Définissez une fonction update(). Cela prendra la clé
  • trouvé := Faux
  • pour chaque index i et clé k dans new_list, faites
    • si la clé est la même que k, alors
      • new_list[i]:= clé
      • trouvé := Vrai
      • sortir de la boucle
    • si c'est faux, alors
      • insérer la clé à la fin de new_list
  • Définissez une fonction get() . Cela prendra la clé
    • pour chaque k dans new_list, faites
      • si k est identique à la clé, alors
        • retourner vrai
      • retourner Faux
  • Définissez une fonction Remove(). Cela prendra la clé
    • pour chaque index i et clé k dans new_list, faites
      • si la clé est la même que k, alors
        • supprimer new_list[i]
  • Créez maintenant un hashSet personnalisé. Il y aura quelques méthodes comme suit
  • Initialisez-le comme suit -
  • espace_clé := 2096
  • hash_table := une liste d'objets de type bucket de taille key_space
  • Définissez une fonction add(). Cela prendra la clé
    • hash_key := clé mod key_space
    • appelez la mise à jour (clé) de hash_table [hash_key]
  • Définissez une fonction Remove(). Cela prendra la clé
    • hash_key := keymodkey_space
    • supprimer la clé de hash_table[hash_key]
  • Définissez une fonction contain(). Cela prendra la clé
    • hash_key := keymodkey_space
    • return get(key) de hash_table[hash_key]

Implémentation de HashSet en Python

Ici, nous allons implémenter l'algorithme ci-dessus et créer un programme Python. Nous définirons les deux classes : HashSet et CreateHashset. Voyons le code ci-dessous.

Code-

 # Here, we are Designing the HashSet in python # Here, we are checking the values and will return the output class class verifyvalues: # Here, we are initialization function which has list new_list def __init__(self): self.new_list=[] # Here, we have the function to update values def update(self, key): found=False for i,k in enumerate(self.new_list): if key==k: self.new_list[i]=key found=True break if not found: self.new_list.append(key) # Here, we have function to get values def get(self, key): for k in self.new_list: if k==key: return True return False # Here, we have function to remove values def remove(self, key): for i,k in enumerate(self.new_list): if key==k: del self.new_list[i] # Here, we have defined a class as HashSet class HashSet: # Here, we have defined an Initialization function def __init__(self): self.key_space = 2096 self.hash_table=[verifyvalues() for i in range(self.key_space)] def hash_values(self, key): hash_key=key%self.key_space return hash_key # Here, we have also defined an add function def add(self, key): self.hash_table[self.hash_values(key)].update(key) # Here, we have also defined a remove function def remove(self, key): self.hash_table[self.hash_values(key)].remove(key) # Here, we have defined the contains function def contains(self, key): return self.hash_table[self.hash_values(key)].get(key) def display(self): ls=[] for i in self.hash_table: if len(i.new_list)!=0:ls.append(i.new_list[0]) print(ls) ob = HashSet() print(ob.hash_values(10)) print('Add 10') ob.add(10) print(ob.hash_values(6)) print('Add 6 ') ob.add(6) print(ob.hash_values(5)) print('Add 5 ') ob.add(5) print('Contains 10 : ',ob.contains(10)) print('Contains 3: ',ob.contains(3)) print('Contains 8 : ',ob.contains(9)) 

Sortir:

 10 Add 10 6 Add 6 5 Add 5 Contains 10 : True Contains 3: False Contains 8 : False 2 Add 2 3 Add 3 Contains 2 : True Remove 2 Contains 2 : False Contains 3 : True [3, 5, 6, 10] 

Explication:

    classe verifyvalues :Cette classe traite d'un récapitulatif des valeurs (new_list) et donne des techniques pour actualiser, vérifier la présence et éliminer les valeurs.Technique __init__ :Présente une liste vacante pour chaque événement.technique de mise à jour :Met à jour une valeur actuelle ou ajoute une autre valeur à la liste.obtenir la technique :Vérifie si une valeur existe dans la liste.éliminer la stratégie :Élimine une estime prédéfinie de la liste.Classe HashSet :Il s'agit de l'exécution principale du HashSet.Technique __init__ :Présente le HashSet avec un espace clé prédéfini et crée un cluster (hash_table) d'exemples de vérification de valeurs pour prendre en charge les impacts.Technique hash_values :Élabore la clé de hachage pour une clé d'information donnée en utilisant l'activité modulo.ajouter une stratégie :Ajoute une clé au HashSet en actualisant l'objet de comparaison verifyvalues ​​dans hash_table.éliminer la technique :Élimine une clé du HashSet.contient la stratégie :Vérifie si un élément vital existe dans le HashSet.technique du spectacle :Imprime le composant principal de chaque liste de valeurs de vérification non nulle, offrant une représentation de la circulation des informations.Exemple d'utilisation :Le code montre l'utilisation du HashSet en ajoutant des clés (10, 6, 5), en vérifiant la présence et en affichant des données sur l'état interne.