logo

Hur designar man en hashset i Python?

Som vi vet är HashSet en känd klass i Java. HashSet används för att lagra värdena med hjälp av en hashtabell. I den här handledningen kommer vi att täcka HashSet i Python. Vi kommer också att lära oss om hur vi kan designa HashSet i Python.

En HashSet är en grundläggande datastruktur i programmering, vanligen förekommande i språk som Java. Det tillhör Java Collections Framework och fungerar som en implementering av uppsättningsgränssnittet. Den utmärkande egenskapen hos en HashSet är dess förmåga att lagra element på ett sätt som underlättar effektiv kontroll av förekomsten av specifika element och säkerställer unikhet i uppsättningen. Till skillnad från strukturer som listor, upprätthåller inte en HashSet någon specifik ordning bland dess element.

En viktig egenskap hos en HashSet är dess garanti för unikhet; det tillåter inte dubbletter av element. Operationer som att lägga till, ta bort och kontrollera förekomsten av element har vanligtvis konstant genomsnittlig prestanda, vilket gör det till ett effektivt val för sådana uppgifter. Det är dock viktigt att notera att ordningen på element i en HashSet inte är garanterad.

Nyckelegenskaper:

Unikhet: En HashSet tillåter inte dubbletter av element. Den använder metoden equals() för att kontrollera om det finns dubbletter, vilket säkerställer att varje element i uppsättningen är unikt.

Ingen order: Elementen i en HashSet lagras inte i någon speciell ordning. Om du behöver behålla ordningen på element kan du överväga att använda ett LinkedHashSet, som upprätthåller ordningen för insättning.

Underliggande datastruktur: Internt använder en HashSet en hashtabell för att lagra element. Detta möjliggör konstant-tid genomsnittlig komplexitet för grundläggande operationer som lägga till, ta bort och innehåller.

ladda ner youtube video vlc

Nullelement: En HashSet tillåter ett null-element. Om du försöker lägga till ett duplicerat null-element kommer det att ersätta det befintliga.

Introduktion

Vi kan designa HashSet utan att använda några hashtabellsbibliotek. Nedan finns flera olika funktioner -

add(x) - Metoden add(x) används huvudsakligen för att infoga ett värde x i HashSet.

innehåller (x) - Metoden contains(x) används främst för att kontrollera om ett värde x finns i HashSet eller inte.

ta bort(x) - Metoden remove(x) används huvudsakligen för att ta bort x från HashSet. Om HashSet inte har något värde gör det ingenting.

Låt oss förstå dessa metoder genom exemplet nedan.

boto3

Initiera först HashSet och anrop add(1)-funktionen. Det kommer att lägga till 1 i hash-uppsättningen. Anrop add(3), vilket lägger till 3, sedan anropet innehåller(1). Den kommer att kontrollera om 1 finns eller inte i hash-uppsättningen. Nu anropar vi contains(2), add(2), contains(2), remove(2), contains(2).

Utdata kommer att returneras som sant för 1 är närvarande, falskt för 2 är inte närvarande, sant för 2 är närvarande, falskt för 2 är inte närvarande.

Grundläggande funktioner för HashSet i Python

Vi kan utföra några grundläggande operationer i HashSet med följande metoder. Låt oss förstå dessa metoder.

Lägger till nya värden i HashSet

I exemplet nedan kommer vi att lägga till värdet i hash-uppsättningen med hjälp av add()-funktionen. Add()-funktionen lägger till värdet ett i taget. Låt oss se följande kod.

Exempel -

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

Produktion:

html listbox
 Adding value: 2 Adding value: 7 Adding value: 6 

Ta bort värden i HashSet

Vi kan ta bort det befintliga värdet med funktionen remove(). Låt oss förstå följande kod.

Exempel -

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

Produktion:

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

Kontrollera om värden finns i HashSet

I det här exemplet kommer vi att visa hur vi kan kontrollera om ett visst värde finns eller inte använder innehåller() fungera. Låt oss förstå följande kod.

Exempel -

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

Produktion:

json i json exempel
 Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2 

Algoritm för HashSet i Python

I det första steget definierar vi en datastruktur som heter HashList. Sedan initierar vi en tom lista som en ny_lista . Sedan definierar vi en update()-funktion där found kommer att lagra ett booleskt värde False. Nu använder vi för loop för varje index I och K. om nyckeln är densamma som 'k', då ny_lista[i]=k och hittat värde satt till True. Värdet kommer att infogas sist i listan om inget värde hittas.

Nästa steg är att definiera funktionen get() som vi kommer att använda för slingan, och om värdet på k är detsamma som nyckeln kommer utdata att vara True; annars, Falskt. Om nyckeln är samma som 'k', radera värdet från listan ny_lista. Samma process kommer att tillämpas i remove()-funktionen.

Nu kommer vi att skapa Main class HashSet. Den här klassen kommer att deklarera initieringsfunktionen där key_space-värdet = 2096. Hash_tablen kommer att ha en lista över objekt av typen new_list av storlek key_space . Sedan kommer vi att skapa add() funktion, i vilken hash_key = nyckel%key_space och uppdatera nyckeln till hash_table[hash_key]. Efter det kommer vi att ringa till ta bort funktionen , där hash_key = nyckel % key_space, och ta bort nyckeln till hash_table[hash_key]. Efter det kommer vi att ringa till innehåller funktion , i vilken

hash_key = nyckel % key_space, och hämta nyckeln till hash_table[hash_key].

byggare designmönster

Låt oss se den stegvisa implementeringsalgoritmen.

Algoritm -

  • Skapa datastruktur som heter HashSet, initiera den som nedan
  • ny_lista = []
  • Definiera en funktion update(). Detta kommer att ta nyckeln
  • hittat := Falskt
  • för varje index i och nyckel k i new_list, gör
    • om nyckeln är samma som k, då
      • new_list[i]:= nyckel
      • hittat:= Sant
      • komma ut från slingan
    • om det hittas falskt, då
      • infoga nyckel i slutet av new_list
  • Definiera en funktion get() . Detta kommer att ta nyckeln
    • för varje k i new_list, gör
      • om k är samma som nyckel, då
        • returnera Sant
      • returnera Falskt
  • Definiera en funktion remove(). Detta kommer att ta nyckeln
    • för varje index i och nyckel k i new_list, gör
      • om nyckeln är samma som k, då
        • radera ny_lista[i]
  • Skapa nu anpassad hashSet. Det kommer att finnas få metoder enligt följande
  • Initiera detta enligt följande -
  • key_space := 2096
  • hash_table:= en lista med objekt av hinktyp av storlek key_space
  • Definiera en funktion add(). Detta kommer att ta nyckeln
    • hash_key:= nyckel mod key_space
    • ring uppdatering(nyckel) av hash_table[hash_key]
  • Definiera en funktion remove(). Detta kommer att ta nyckeln
    • hash_key:= keymodkey_space
    • radera nyckel från hash_table[hash_key]
  • Definiera en funktion innehåller(). Detta kommer att ta nyckeln
    • hash_key:= keymodkey_space
    • returnera get(nyckel) av hash_table[hash_key]

Implementering av HashSet i Python

Här kommer vi att implementera ovanstående algoritm och skapa ett Python-program. Vi kommer att definiera de två klasserna: HashSet och CreateHashset. Låt oss se koden nedan.

Kod -

 # 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)) 

Produktion:

 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] 

Förklaring:

    verifyvalues ​​klass:Den här klassen behandlar en sammanfattning av värden (new_list) och ger tekniker för att uppdatera, kontrollera närvaron och eliminera värden.__init__ teknik:Inför en ledig sammanfattning för varje tillfälle.uppdateringsteknik:Uppdaterar ett aktuellt värde eller sätter ett annat värde på sammanfattningen.få teknik:Kontrollerar i händelse av att ett värde finns i sammandraget.eliminera strategi:Eliminerar en fördefinierad aktning från nedgången.HashSet-klass:Detta är den primära exekveringen av HashSet.__init__ teknik:Introducerar HashSet med ett fördefinierat nyckelutrymme och skapar ett kluster (hash_table) med verifyvalues-exempel för att ta hand om effekter.hash_values ​​teknik:Arbetar fram hash-nyckeln för en given infonyckel med hjälp av modulo-aktiviteten.lägg till strategi:Lägger till en nyckel till HashSet genom att uppdatera det jämförande verifyvalues-objektet i hash_table.eliminera teknik:Eliminerar en nyckel från HashSet.innehåller strategi:Kontrollerar om en vital finns i HashSet.visa teknik:Skriver ut huvudkomponenten i varje lista över icke-ogiltiga verifieringsvärden, och ger en skildring av informationscirkulationen.Användningsexempel:Koden visar användningen av HashSet genom att lägga till nycklar (10, 6, 5), kontrollera närvaron och visa lite data om det inre tillståndet.