logo

Hvordan designe et hashsett i Python?

Som vi vet at HashSet er en kjent klasse i Java. HashSet brukes til å lagre verdiene ved hjelp av en hash-tabell. I denne opplæringen vil vi dekke HashSet i Python. Vi vil også lære om hvordan vi kan designe HashSet i Python.

Et HashSet er en grunnleggende datastruktur i programmering, ofte funnet i språk som Java. Den tilhører Java Collections Framework og fungerer som en implementering av det angitte grensesnittet. Det særegne ved et HashSet er dets evne til å lagre elementer på en måte som muliggjør effektiv kontroll av eksistensen av spesifikke elementer og sikrer unikhet i settet. I motsetning til strukturer som lister, opprettholder ikke et HashSet noen spesifikk rekkefølge blant elementene.

En viktig egenskap ved et HashSet er garantien for unikhet; den tillater ikke dupliserte elementer. Operasjoner som å legge til, fjerne og sjekke for tilstedeværelsen av elementer har vanligvis konstant gjennomsnittlig ytelse, noe som gjør det til et effektivt valg for slike oppgaver. Det er imidlertid viktig å merke seg at rekkefølgen på elementene i et HashSet ikke er garantert.

Nøkkelegenskaper:

Unikhet: Et HashSet tillater ikke dupliserte elementer. Den bruker equals()-metoden for å se etter duplikater, og sikrer at hvert element i settet er unikt.

Ingen bestilling: Elementene i et HashSet er ikke lagret i noen spesiell rekkefølge. Hvis du trenger å opprettholde rekkefølgen på elementene, kan du vurdere å bruke et LinkedHashSet, som opprettholder rekkefølgen for innsetting.

Underliggende datastruktur: Internt bruker et HashSet en hash-tabell for å lagre elementer. Dette gir mulighet for konstant-tid gjennomsnittlig kompleksitet for grunnleggende operasjoner som legg til, fjern og inneholder.

Nullelementer: Et HashSet tillater ett null-element. Hvis du prøver å legge til et duplikat null-element, vil det erstatte det eksisterende.

Introduksjon

Vi kan designe HashSet uten å bruke noen hashtabellbiblioteker. Nedenfor er de mange forskjellige funksjonene -

streng til int i java

legg til (x) - Add(x)-metoden brukes hovedsakelig til å sette inn en verdi x i HashSet.

inneholder (x) - Metoden contains(x) brukes hovedsakelig for å sjekke om en verdi x er tilstede i HashSet eller ikke.

fjern (x) - Remove(x)-metoden brukes hovedsakelig til å slette x fra HashSet. Hvis HashSet ikke har noen verdi, vil det ikke gjøre noe.

La oss forstå disse metodene med eksemplet nedenfor.

Først initialiser HashSet og kall add(1)-funksjonen. Det vil legge til 1 i hash-settet. Call add(3), som vil legge til 3, deretter kallet inneholder(1). Den vil sjekke om 1 er til stede eller ikke i hash-settet. Nå kaller vi contains(2), add(2), contains(2), remove(2), contains(2).

Utgangen vil bli returnert som sann for 1 er tilstede, falsk for 2 er ikke til stede, sann for 2 er til stede, usann for 2 er ikke til stede, henholdsvis.

cm til fot og tommer

Grunnleggende operasjoner for HashSet i Python

Vi kan utføre noen grunnleggende operasjoner i HashSet ved å bruke følgende metoder. La oss forstå disse metodene.

Legger til nye verdier i HashSet

I eksemplet nedenfor vil vi legge til verdien i hash-settet ved å bruke add()-funksjonen. Add()-funksjonen legger til verdien én om gangen. La oss se følgende kode.

Eksempel -

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

Produksjon:

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

Fjerner verdier i HashSet

Vi kan fjerne den eksisterende verdien ved å bruke remove()-funksjonen. La oss 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) 

Produksjon:

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

Sjekker om verdier finnes i HashSet

I dette eksemplet vil vi demonstrere hvordan vi kan sjekke om en bestemt verdi eksisterer eller ikke bruker inneholder() funksjon. La oss forstå følgende kode.

Eksempel -

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

Produksjon:

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

Algoritme for HashSet i Python

I det første trinnet definerer vi én datastruktur kalt HashList. Deretter initialiserer vi en tom liste som en ny_liste . Deretter definerer vi en update()-funksjon der found vil lagre en boolsk verdi False. Nå bruker vi for loop for hver indeks I og K. hvis nøkkelen er den samme som 'k', da ny_liste[i]=k og funnet verdi satt til True. Verdien vil bli satt inn på den siste av listen hvis ingen verdi blir funnet.

Det neste trinnet er å definere get()-funksjonen, som vi skal bruke for løkken, og hvis verdien av k er den samme som nøkkelen, vil utgangen være True; ellers falsk. Hvis nøkkelen er den samme som 'k', slett verdien fra listen ny_liste. Den samme prosessen vil bli brukt i remove()-funksjonen.

Nå skal vi lage hovedklassen HashSet. Denne klassen vil erklære initialiseringsfunksjonen der nøkkelmellomromverdien = 2096. Hash_tabellen vil ha en liste over objekter av størrelse av new_list-typen key_space . Deretter vil vi lage add() funksjon, der hash_key = key%key_space og oppdater nøkkelen til hash_table[hash_key]. Etter det vil vi ringe til fjern funksjon , der hash_key = nøkkel % key_space, og slett nøkkelen til hash_table[hash_key]. Etter det vil vi ringe til inneholder funksjon , hvori

hash_key = nøkkel % key_space, og få nøkkelen til hash_table[hash_key].

La oss se den trinnvise implementeringsalgoritmen.

Algoritme -

  • Lag datastruktur kalt HashSet, Initialiser den som nedenfor
  • ny_liste = []
  • Definer en funksjonsoppdatering(). Dette vil ta nøkkelen
  • funnet := Falsk
  • for hver indeks i og nøkkel k i new_list, gjør
    • hvis nøkkelen er den samme som k, da
      • new_list[i]:= nøkkel
      • funnet:= Sant
      • komme ut fra løkken
    • hvis funnet falsk, da
      • sett inn nøkkel på slutten av new_list
  • Definer en funksjon get() . Dette vil ta nøkkelen
    • for hver k i ny_liste, gjør
      • hvis k er det samme som nøkkel, da
        • returner True
      • returner False
  • Definer en funksjon remove(). Dette vil ta nøkkelen
    • for hver indeks i og nøkkel k i new_list, gjør
      • hvis nøkkelen er den samme som k, da
        • slett ny_liste[i]
  • Lag nå tilpasset hashSet. Det vil være få metoder som følger
  • Initialiser dette som følger -
  • key_space:= 2096
  • hash_table:= en liste over objekt av bøttetype med størrelse key_space
  • Definer en funksjon add(). Dette vil ta nøkkelen
    • hash_key:= key mod key_space
    • kall oppdatering(nøkkel) av hash_table[hash_key]
  • Definer en funksjon remove(). Dette vil ta nøkkelen
    • hash_key:= keymodkey_space
    • slett nøkkel fra hash_table[hash_key]
  • Definer en funksjon inneholder(). Dette vil ta nøkkelen
    • hash_key:= keymodkey_space
    • return get(key) av hash_table[hash_key]

Implementering av HashSet i Python

Her vil vi implementere algoritmen ovenfor og lage Python-program. Vi vil definere de to klassene: HashSet og CreateHashset. La oss se koden nedenfor.

Kode -

verdien av strengen
 # 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)) 

Produksjon:

 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 klassen tar for seg en oversikt over verdier (new_list) og gir teknikker for å oppdatere, se etter tilstedeværelse og eliminere verdier.__init__ teknikk:Introduserer en ledig oversikt for hver anledning.oppdateringsteknikk:Oppdaterer en gjeldende verdi eller fester en annen verdi til oversikten.få teknikk:Sjekker i tilfelle det finnes en verdi i oversikten.eliminere strategi:Eliminerer en forhåndsdefinert aktelse fra sammendraget.HashSet-klasse:Dette er den primære utførelsen av HashSet.__init__ teknikk:Introduserer HashSet med et forhåndsdefinert nøkkelrom og lager en klynge (hash_table) med verifyvalues-eksempler for å ta vare på påvirkninger.hash_values ​​teknikk:Regner ut hash-nøkkelen for en gitt infonøkkel ved å bruke modulo-aktiviteten.legg til strategi:Legger til en nøkkel til HashSet ved å oppdatere det sammenlignende verifyvalues-objektet i hash_table.eliminere teknikk:Eliminerer en nøkkel fra HashSet.inneholder strategi:Sjekker om en vital finnes i HashSet.vis teknikk:Skriver ut hovedkomponenten i hver liste over ikke-ugyldige verifisere verdier, og tilbyr en skildring av informasjonssirkulasjonen.Eksempel på bruk:Koden viser bruken av HashSet ved å legge til nøkler (10, 6, 5), sjekke for tilstedeværelse og vise noen data om den indre tilstanden.