Tabele Hash și hărți Hash în Python

Publicat: 2022-11-06

Datele necesită mai multe moduri pentru a fi accesate sau stocate. Hash Tables și Hashmaps se întâmplă să fie cele mai bune structuri de date pentru a implementa acest lucru în Python prin tipul de date încorporat cunoscut sub numele de dicționar.

Un Hashmap sau un tabel Hash din structura de date mapează cheile la perechile sale de valori și utilizează o funcție care calculează orice valoare de index care conține elementele care urmează să fie inserate, căutate sau eliminate. Acest lucru ajută la accesul la date mai ușor și mai rapid. Tabelele hash stochează în general perechi cheie-valoare și folosesc funcția hash pentru a genera o cheie.

În acest articol, veți afla ce sunt Hash Tables și Hashmaps și cum sunt implementate în Python.

Învață știința datelor pentru a câștiga avantaj în fața concurenților tăi

Cuprins

Ce este un tabel Hash sau un Python Hashmap?

Un tabel hash sau hashmap Python este o structură de date indexată. Utilizează funcții hash pentru a calcula un index folosind o cheie într-o serie de sloturi sau găleți. Puteți mapa valoarea acesteia la o găleată folosind indexul corespunzător, iar cheia este imuabilă și unică.

Hashmaps-urile sunt similare cu un dulap cu sertare etichetat cu lucrurile pe care le depozitează. De exemplu, hashmaps-urile pot stoca informații despre utilizator, cum ar fi numele și prenumele etc., în găleată.

Funcția hash este integrală pentru implementarea unei hărți hash. Folosește cheia și o traduce în indexul găleții din lista de găleți. Hashingul ideal produce un index separat pentru fiecare cheie. Cu toate acestea, rețineți că pot apărea coliziuni. Când hashingul produce un index deja existent, o găleată pentru mai multe valori poate fi utilizată cu ușurință prin rehashing sau adăugând o listă. În Python, un exemplu de hărți hash sunt dicționarele.

Să analizăm în detaliu implementarea hashmap-ului pentru a afla cum să personalizăm și să construim structuri de date pentru optimizarea căutării.

Hashmap în Python

Hashmap include următoarele funcții:

  • set_val(cheie, valoare): Această funcție este utilizată pentru inserarea unei perechi cheie-valoare în harta hash. Dacă există deja o valoare existentă în harta hash, trebuie să actualizați valoarea.
  • get_val(key): Această funcție returnează valoarea cheii specificate care este mapată sau „Nici o înregistrare găsită” dacă această hartă nu are mapare pentru cheie.
  • delete_val(key): Șterge maparea pentru o anumită cheie dacă hashmap are maparea pentru cheie.

Implementare: -

clasa Hashtable:

# Creați o listă de găleți goală de dimensiunea dată

def __init__(self, size):

self.size = dimensiune

self.hash_table = self.create_buckets()

def create_buckets(self):

returnează [[] pentru _ în interval(self.size)]

# Inserați valori în harta hash

def set_val(self, key, val):

# Obțineți indexul de la cheie

# folosind funcția hash

hashed_key = hash(cheie) % self.size

# Obțineți găleata corespunzătoare indexului

găleată = self.hash_table[hashed_key]

found_key = Fals

pentru index, înregistrați în enumerate(găleată):

record_key, record_val = înregistrare

# verificați dacă găleata are aceeași cheie ca

# cheia care trebuie introdusă

if record_key == cheie:

found_key = Adevărat

pauză

# Dacă găleata are aceeași cheie ca și cheia care trebuie introdusă,

# Actualizați valoarea cheii

# În caz contrar, adăugați noua pereche cheie-valoare la grup

if found_key:

găleată[index] = (cheie, val)

altceva:

bucket.append((cheie, val))

# Returnează valoarea căutată cu o anumită cheie

def get_val(self, key):

# Obțineți indexul de la cheie folosind

# funcția hash

hashed_key = hash(cheie) % self.size

# Obțineți găleata corespunzătoare indexului

găleată = self.hash_table[hashed_key]

found_key = Fals

pentru index, înregistrați în enumerate(găleată):

record_key, record_val = înregistrare

# verificați dacă găleata are aceeași cheie ca

# cheia căutată

if record_key == cheie:

found_key = Adevărat

pauză

# Dacă găleata are aceeași cheie ca și cheia căutată,

# Returnează valoarea găsită

# În caz contrar, indicați că nu a fost găsită nicio înregistrare

if found_key:

returnează record_val

altceva:

returnează „Nu a fost găsită nicio înregistrare”

# Eliminați o valoare cu o anumită cheie

def delete_val(self, key):

# Obțineți indexul de la cheie folosind

# funcția hash

hashed_key = hash(cheie) % self.size

# Obțineți găleata corespunzătoare indexului

găleată = self.hash_table[hashed_key]

found_key = Fals

pentru index, înregistrați în enumerate(găleată):

record_key, record_val = înregistrare

# verificați dacă găleata are aceeași cheie ca

# cheia care trebuie ștearsă

if record_key == cheie:

found_key = Adevărat

pauză

if found_key:

bucket.pop(index)

întoarcere

# Pentru a tipări elementele hărții hash

def __str__(self):

returnează „”.join(str(articol) pentru elementul din self.hash_table)

hash_table = HashTable(50)

# introduceți câteva valori

hash_table.set_val([email protected]', 'o valoare')

print(hash_table)

imprimare()

hash_table.set_val('[email protected]', 'o altă valoare')

print(hash_table)

imprimare()

# caută/accesează o înregistrare cu cheie

print(hash_table.get_val('[email protected]'))

imprimare()

# ștergeți sau eliminați o valoare

hash_table.delete_val('[email protected]')

print(hash_table)

Ieșire: -

[][][][][][][][][][][][][][][][][][][][][] ([email protected]’, „o anumită valoare”) ][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] [][][][]

[][][][][][][][][][][][][][][][][][][][][] ([email protected]’, „o anumită valoare”) ][][][][][][][(„[email protected]”, „o altă valoare”)][][][][][][][][][][ ][][][][][][][][][][][][][]

O altă valoare

[][][][][][][][][][][][][][][][][][][][][] ([email protected]’, „o anumită valoare”) ][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] [][][][]

Verificați programele noastre din SUA - Data Science

Program de certificat profesional în știința datelor și analiză de afaceri Master în Știința Datelor Master în Știința Datelor Program de certificat avansat în știința datelor
Program Executive PG în Știința Datelor Bootcamp de programare Python Program de certificat profesional în știința datelor pentru luarea deciziilor de afaceri Program avansat în Știința datelor

Efectuarea operațiunilor pe tabelele Hash folosind dicționare:

Există numeroase operații care pot fi efectuate în Python pe tabele hash prin dicționare. Acestea sunt după cum urmează: -

  • Accesarea Valorilor
  • Actualizarea valorilor
  • Ștergerea elementului

Accesarea valorilor:

Puteți accesa cu ușurință valorile unui dicționar în următoarele moduri: -

  • Utilizarea valorilor cheie
  • Utilizarea funcțiilor
  • Implementarea buclei for

Utilizarea valorilor cheie:

Puteți accesa valorile de dicționar folosind valorile cheie ca mai jos:-

my_dict={'Elsa': '001', 'Anna': '002', 'Olaf': '003'}

my_dict['Anna']

Ieșire: '002′

Utilizarea funcțiilor:

Există numeroase funcții încorporate, cum ar fi get(), keys(), values(), etc.

my_dict={'Elsa': '001', 'Anna': '002', 'Olaf': '003'}

print(my_dict.keys())

print(my_dict.values())

print(my_dict.get('Elsa'))

Ieșire: -

dict_keys(['Elsa', 'Anna', 'Olaf'])

dict_values(['001', '002', '003'])

001

Implementarea buclei for:

Bucla vă oferă acces la perechile cheie-valoare ale unui dicționar prin iterarea acestora. De exemplu:

my_dict={'Elsa': '001', 'Anna': '002', 'Olaf': '003'}

print(„Toate cheile”)

pentru x în my_dict:

print(x) #tipărește cheile

print(„Toate valorile”)

pentru x în my_dict.values():

print(x) #tipărește valori

print(„Toate cheile și valorile”)

pentru x,y în my_dict.items():

print(x, „:” , y) #tipărește cheile și valorile

Ieșire:

Toate cheile

Elsa

Anna

Olaf

Toate valorile

001

002

003

Toate cheile și valorile

Elsa: 001

Anna: 002

Olaf: 003

Actualizarea valorilor:

Dicționarele sunt tipuri de date modificabile care pot fi actualizate atunci când este necesar. Puteți face după cum urmează: -

my_dict={'Elsa': '001', 'Anna': '002', 'Olaf': '003'}

my_dict['Olaf'] = '004' #Actualizarea valorii lui Dave

my_dict['Kristoff'] = '005' #adăugarea unei perechi cheie-valoare

imprimare(dictul_meu)

Ieșire : {'Elsa': '001' , 'Anna': '002' , 'Olaf': '004', 'Kristoff': '005'}

Ștergerea elementelor dintr-un dicționar:

Puteți șterge elemente dintr-un dicționar cu funcții precum del(), pop(), popitem(), clear(), etc. De exemplu:

my_dict={'Elsa': '001', 'Anna': '002', 'Olaf': '003'}

del my_dict['Elsa'] #elimină perechea cheie-valoare a lui 'Elsa'

my_dict.pop('Anna') #elimină valoarea lui 'Anna'

my_dict.popitem() #elimină ultimul element inserat

imprimare(dictul_meu)

Ieșire : {'Olaf': '003'}

Concluzie

Putem concluziona cu ușurință că hashmaps și hash table Python sunt integrante pentru un acces mai ușor și mai rapid la datele relevante. Este un instrument valoros pentru profesioniștii în știința datelor, cum ar fi oamenii de știință și analiștii de date. Dacă sunteți interesat să aflați mai multe despre domeniul științei datelor, upGrad are cel mai bun program de certificat profesional în știința datelor pentru luarea deciziilor de afaceri .

Ce este hashmap, Python, și hash table, Python?

Un tabel hash ajută la stocarea perechilor cheie-valoare în care o cheie este generată folosind o funcție hash. Hashmaps-urile sau implementările hashtable în Python sunt realizate cu dicționare încorporate.

Care este diferența dintre un hashmap și un hash table Python?

Un Hashmap este nesincronizat, dar un Hashtable este sincronizat. Aceasta înseamnă că tabelele Hash sunt sigure pentru fire și pot fi partajate între numeroase fire, dar HashMap are nevoie de o sincronizare adecvată înainte de a fi partajată.

Map este un Hashtable?

O tabelă hash Python numită și o hartă hash, este o structură de date care mapează cheile la valori. Utilizează tehnica hashing.