Tabele Hash și hărți Hash în Python
Publicat: 2022-11-06Datele 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
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.