logo

Hvordan designes et hashset i Python?

Som vi ved, er HashSet en berømt klasse i Java. HashSet bruges til at gemme værdierne ved hjælp af en hash-tabel. I denne tutorial vil vi dække HashSet i Python. Vi vil også lære om, hvordan vi kan designe HashSet i Python.

Et HashSet er en grundlæggende datastruktur i programmering, der almindeligvis findes i sprog som Java. Det tilhører Java Collections Framework og fungerer som en implementering af den indstillede grænseflade. Det karakteristiske træk ved et HashSet er dets evne til at gemme elementer på en måde, der letter effektiv kontrol for eksistensen af ​​specifikke elementer og sikrer unikhed i sættet. I modsætning til strukturer såsom lister, opretholder et HashSet ikke nogen specifik rækkefølge blandt dets elementer.

Et nøgleegenskab ved et HashSet er dets garanti for unikhed; det tillader ikke duplikerede elementer. Operationer som tilføjelse, fjernelse og kontrol for tilstedeværelsen af ​​elementer har typisk konstant-tidsgennemsnitlig ydeevne, hvilket gør det til et effektivt valg til sådanne opgaver. Det er dog vigtigt at bemærke, at rækkefølgen af ​​elementer i et HashSet ikke er garanteret.

Nøglekarakteristika:

Unikhed: Et HashSet tillader ikke duplikerede elementer. Den bruger equals()-metoden til at kontrollere for dubletter, hvilket sikrer, at hvert element i sættet er unikt.

Ingen ordre: Elementerne i et HashSet er ikke gemt i nogen bestemt rækkefølge. Hvis du har brug for at vedligeholde rækkefølgen af ​​elementer, kan du overveje at bruge et LinkedHashSet, som fastholder rækkefølgen af ​​indsættelse.

Underliggende datastruktur: Internt bruger et HashSet en hash-tabel til at gemme elementer. Dette giver mulighed for konstant-tid gennemsnitlig kompleksitet for grundlæggende operationer som tilføje, fjerne og indeholder.

Nul elementer: Et HashSet tillader ét null-element. Hvis du forsøger at tilføje et dublet null-element, vil det erstatte det eksisterende.

Introduktion

Vi kan designe HashSet uden at bruge nogen hash tabel biblioteker. Nedenfor er de mange forskellige funktioner -

blokere YouTube-annoncer for Android

tilføje(x) - Add(x)-metoden bruges hovedsageligt til at indsætte en værdi x i HashSet.

indeholder (x) - Metoden contains(x) bruges hovedsageligt til at kontrollere, om en værdi x er til stede i HashSet eller ej.

fjern (x) - Metoden remove(x) bruges hovedsageligt til at slette x fra HashSet. Hvis HashSet ikke har nogen værdi, vil det ikke gøre noget.

Lad os forstå disse metoder ved nedenstående eksempel.

Start først HashSet og kald add(1)-funktionen. Det tilføjer 1 til hashsættet. Kald add(3), som tilføjer 3, og derefter kalder indeholder(1). Det vil kontrollere, om 1 er til stede eller ej i hashsættet. Nu kalder vi contains(2), add(2), contains(2), remove(2), contains(2).

Outputtet vil blive returneret som henholdsvis sand for 1 er til stede, falsk for 2 er ikke til stede, sand for 2 er til stede, falsk for 2 er ikke til stede.

hvor mange 0 i en milliard

Grundlæggende betjening af HashSet i Python

Vi kan udføre nogle grundlæggende handlinger i HashSet ved hjælp af følgende metoder. Lad os forstå disse metoder.

Tilføjelse af nye værdier i HashSet

I eksemplet nedenfor tilføjer vi værdien i hashsættet ved hjælp af add()-funktionen. Add()-funktionen tilføjer værdien én ad gangen. Lad os se følgende kode.

Eksempel -

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

Produktion:

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

Fjerner værdier i HashSet

Vi kan fjerne den eksisterende værdi ved hjælp af funktionen remove(). Lad os forstå følgende kode.

Eksempel -

 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 

Kontrollerer om værdier findes i HashSet

I dette eksempel vil vi demonstrere, hvordan vi kan kontrollere, om en bestemt værdi eksisterer eller ikke bruger indeholder() fungere. Lad os forstå følgende kode.

Eksempel -

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

Produktion:

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

Algoritme for HashSet i Python

I det første trin definerer vi en datastruktur kaldet HashList. Derefter initialiserer vi en tom liste som en ny_liste . Derefter definerer vi en update() funktion, hvor found vil gemme en boolsk værdi False. Nu bruger vi for loop for hvert indeks I og K. Hvis nøglen er den samme som 'k', så ny_liste[i]=k og fundet værdi sat til True. Værdien vil blive indsat sidst på listen, hvis der ikke findes nogen værdi.

Det næste trin er at definere get()-funktionen, som vi vil bruge til løkken, og hvis værdien af ​​k er den samme som nøglen, vil outputtet være True; ellers falsk. Hvis nøglen er den samme som 'k', skal du slette værdien fra listen ny_liste. Den samme proces vil blive anvendt i remove()-funktionen.

Nu vil vi oprette Main class HashSet. Denne klasse vil erklære initialiseringsfunktionen, hvor key_space værdien = 2096. Hash_table vil have en liste over new_list type objekter af størrelse key_space . Derefter vil vi oprette add() funktion, hvori hash_key = key%key_space og opdater nøglen til hash_table[hash_key]. Derefter ringer vi til fjern funktion , hvor hash_key = nøgle % key_space, og slet nøglen til hash_table[hash_key]. Derefter ringer vi til indeholder funktion , hvori

hash_key = nøgle % key_space, og få nøglen til hash_table[hash_key].

Lad os se den trinvise implementeringsalgoritme.

Algoritme -

  • Opret datastruktur kaldet HashSet, Initialiser den som nedenfor
  • ny_liste = []
  • Definer en funktion update(). Dette vil tage nøglen
  • fundet := Falsk
  • for hvert indeks i og nøgle k i new_list, gør
    • hvis nøgle er den samme som k, så
      • new_list[i]:= nøgle
      • fundet:= Sandt
      • komme ud af løkken
    • hvis fundet falsk, så
      • indsæt nøgle i slutningen af ​​new_list
  • Definer en funktion get() . Dette vil tage nøglen
    • for hver k i new_list, gør
      • hvis k er det samme som nøgle, så
        • returner Sandt
      • returner falsk
  • Definer en funktion remove(). Dette vil tage nøglen
    • for hvert indeks i og nøgle k i new_list, gør
      • hvis nøgle er den samme som k, så
        • slet ny_liste[i]
  • Opret nu brugerdefineret hashSet. Der vil være få metoder som følger
  • Initialiser dette som følger -
  • key_space:= 2096
  • hash_table:= en liste over bucket-objekt med størrelse key_space
  • Definer en funktion add(). Dette vil tage nøglen
    • hash_key:= tast mod key_space
    • kald opdatering(nøgle) af hash_table[hash_key]
  • Definer en funktion remove(). Dette vil tage nøglen
    • hash_key:= keymodkey_space
    • slet nøgle fra hash_table[hash_key]
  • Definer en funktion indeholder(). Dette vil tage nøglen
    • hash_key:= keymodkey_space
    • returner get(key) af hash_table[hash_key]

Implementering af HashSet i Python

Her vil vi implementere ovenstående algoritme og oprette Python-program. Vi vil definere de to klasser: HashSet og CreateHashset. Lad os se nedenstående kode.

Kode -

værdi af streng
 # 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] 

Forklaring:

    verifyvalues ​​klasse:Denne klasse omhandler en oversigt over værdier (new_list) og giver teknikker til at opdatere, kontrollere for tilstedeværelse og eliminere værdier.__init__ teknik:Introducerer en ledig oversigt for hver lejlighed.opdateringsteknik:Opdaterer en aktuel værdi eller anbringer en anden værdi til oversigten.få teknik:Tjekker i tilfælde af, at der eksisterer en værdi i kortlægningen.eliminere strategi:Eliminerer en foruddefineret agtelse fra nedturen.HashSet klasse:Dette er den primære udførelse af HashSet.__init__ teknik:Introducerer HashSet med et foruddefineret nøglerum og laver en klynge (hash_table) af verifyvalues ​​eksempler til at tage sig af påvirkninger.hash_values ​​teknik:Udregner hash-nøglen for en given infonøgle ved at bruge modulo-aktiviteten.tilføje strategi:Tilføjer en nøgle til HashSet ved at opdatere det sammenlignende verifyvalues-objekt i hash_table.eliminere teknik:Eliminerer en nøgle fra HashSet.indeholder strategi:Kontrollerer, om der findes en vital i HashSet.vis teknik:Udskriver hovedkomponenten af ​​hver liste over ikke-ugyldige verifikationsværdier og giver en afbildning af informationscirkulationen.Eksempel på brug:Koden viser brugen af ​​HashSet ved at tilføje nøgler (10, 6, 5), tjekke for tilstedeværelse og vise nogle data om den indre tilstand.