Tabelle hash e mappe hash in Python
Pubblicato: 2022-11-06I dati richiedono più modi per essere accessibili o archiviati. Le tabelle hash e le mappe hash sono le migliori strutture di dati per implementarlo in Python tramite il tipo di dati integrato noto come dizionario.
Una Hashmap o una tabella Hash nella struttura dati associa le chiavi alle sue coppie di valori e utilizza una funzione che calcola qualsiasi valore di indice contenente gli elementi da inserire, cercare o rimuovere. Questo aiuta a rendere l'accesso ai dati più facile e veloce. Le tabelle hash generalmente memorizzano coppie chiave-valore e utilizzano la funzione hash per generare una chiave.
In questo articolo imparerai cosa sono le tabelle hash e le hashmap e come vengono implementate in Python.
Impara la scienza dei dati per guadagnare un vantaggio sulla concorrenza
Che cos'è una tabella Hash o un Python Hashmap?
Una tabella hash o hashmap Python è una struttura di dati indicizzata. Utilizza le funzioni hash per calcolare un indice utilizzando una chiave in una matrice di slot o bucket. Puoi mapparne il valore a un bucket utilizzando l'indice corrispondente e la chiave è immutabile e univoca.
Le hashmap sono simili a un armadio a cassetti etichettato con le cose che conservano. Ad esempio, le hashmap possono memorizzare nel bucket le informazioni sull'utente come il nome e il cognome, ecc.
La funzione hash è parte integrante dell'implementazione di una hashmap. Utilizza la chiave e la traduce nell'indice del bucket nell'elenco dei bucket. L'hashing ideale produce un indice separato per ogni chiave. Tuttavia, tieni presente che possono verificarsi collisioni. Quando l'hashing produce un indice già esistente, è possibile utilizzare facilmente un bucket per più valori effettuando nuovamente l'hashing o aggiungendo un elenco. In Python, un esempio di mappe hash sono i dizionari.
Esaminiamo in dettaglio l'implementazione della hashmap per imparare come personalizzare e costruire strutture di dati per l'ottimizzazione della ricerca.
Hashmap in Python
La hashmap include le seguenti funzioni:
- set_val(chiave, valore): questa funzione viene utilizzata per inserire una coppia chiave-valore nella mappa hash. Se è già presente un valore nella mappa hash, è necessario aggiornare il valore.
- get_val(key): questa funzione restituisce il valore alla chiave specificata che è mappata o "Nessun record trovato" se questa mappa non ha mappatura per la chiave.
- delete_val(key): elimina la mappatura per la chiave particolare se la hashmap ha la mappatura per la chiave.
Implementazione:-
classe Hashtable:
# Crea un elenco di bucket vuoto di una determinata dimensione
def __init__(auto, dimensione):
self.size = taglia
self.hash_table = self.create_bucket()
def create_bucket(self):
return [[] for _ in range(self.size)]
# Inserisci i valori nella mappa hash
def set_val(self, key, val):
# Ottieni l'indice dalla chiave
# usando la funzione hash
hash_key = hash(chiave) % self.size
# Ottieni il bucket corrispondente all'indice
bucket = self.hash_table[hash_key]
chiave_trovata = Falso
per index, registra in enumerate(bucket):
record_key, record_val = record
# controlla se il bucket ha la stessa chiave di
# la chiave da inserire
se chiave_record == chiave:
chiave_trovata = Vero
rompere
# Se il bucket ha la stessa chiave della chiave da inserire,
# Aggiorna il valore della chiave
# In caso contrario, aggiungi la nuova coppia chiave-valore al bucket
se trovata_chiave:
bucket[indice] = (chiave, val)
altro:
bucket.append((chiave, val))
# Restituisce il valore cercato con una chiave specifica
def get_val(self, chiave):
# Ottieni l'indice dalla chiave usando
# funzione hash
hash_key = hash(chiave) % self.size
# Ottieni il bucket corrispondente all'indice
bucket = self.hash_table[hash_key]
chiave_trovata = Falso
per index, registra in enumerate(bucket):
record_key, record_val = record
# controlla se il bucket ha la stessa chiave di
# la chiave cercata
se chiave_record == chiave:
chiave_trovata = Vero
rompere
# Se il bucket ha la stessa chiave della chiave ricercata,
# Restituisce il valore trovato
# Altrimenti indica che non è stato trovato alcun record
se trovata_chiave:
ritorno record_val
altro:
restituisce "Nessun record trovato"
# Rimuovere un valore con chiave specifica
def delete_val(self, chiave):
# Ottieni l'indice dalla chiave usando
# funzione hash
hash_key = hash(chiave) % self.size
# Ottieni il bucket corrispondente all'indice
bucket = self.hash_table[hash_key]
chiave_trovata = Falso
per index, registra in enumerate(bucket):
record_key, record_val = record
# controlla se il bucket ha la stessa chiave di
# la chiave da cancellare
se chiave_record == chiave:
chiave_trovata = Vero
rompere
se trovata_chiave:
bucket.pop(indice)
Restituzione
# Per stampare gli elementi della mappa hash
def __str__(self):
return “”.join(str(item) for item in self.hash_table)
tabella_hash = tabella hash(50)
# inserisci dei valori
hash_table.set_val([email protected]', 'qualche valore')
stampa(tabella_hash)
Stampa()
hash_table.set_val('[email protected]', 'qualche altro valore')
stampa(tabella_hash)
Stampa()
# ricerca/accedi a un record con chiave
print(hash_table.get_val('[email protected]'))
Stampa()
# eliminare o rimuovere un valore
hash_table.delete_val('[email protected]')
stampa(tabella_hash)
Produzione:-
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'qualche valore') ][][][][][][][][][][][][][][][][][][][][][][] [][][][]
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'qualche valore') ][][][][][][('[email protected]', 'qualche altro valore')][][][][][][][][][ ][][][][][][][][][][][][][]
Qualche altro valore
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'qualche valore') ][][][][][][][][][][][][][][][][][][][][][][] [][][][]
Dai un'occhiata ai nostri programmi di scienza dei dati negli Stati Uniti
Programma di certificazione professionale in Data Science e Business Analytics | Laurea Magistrale in Data Science | Laurea Magistrale in Data Science | Programma di certificazione avanzato in Data Science |
Programma Executive PG in Data Science | Bootcamp di programmazione Python | Programma di certificazione professionale in Data Science per il processo decisionale aziendale | Programma avanzato in scienza dei dati |
Esecuzione di operazioni sulle tabelle hash utilizzando i dizionari:
Ci sono numerose operazioni che possono essere eseguite in Python su tabelle hash tramite dizionari. Sono i seguenti:-
- Accesso ai valori
- Aggiornamento dei valori
- Eliminazione dell'elemento
Accesso ai valori:
Puoi accedere facilmente ai valori di un dizionario nei seguenti modi:-
- Utilizzo di valori chiave
- Usare le funzioni
- Implementazione del ciclo for
Utilizzo dei valori chiave:
Puoi accedere ai valori del dizionario usando i valori chiave come di seguito:-
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} mio_detto['Anna'] |
Uscita: '002'
Utilizzo delle funzioni:
Ci sono numerose funzioni integrate come get(), keys(), values(), ecc.
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} print(my_dict.keys()) print(my_dict.values()) print(my_dict.get('Elsa')) |
Produzione:-
dict_keys(['Elsa', 'Anna', 'Olaf'])
dict_values(['001', '002', '003'])
001
Implementazione del ciclo for:
Il ciclo ti dà accesso alle coppie chiave-valore di un dizionario eseguendo un'iterazione su di esse. Per esempio:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} print("Tutte le chiavi") per x in my_dict: print(x) #stampa le chiavi print("Tutti i valori") per x in my_dict.values(): print(x) #stampa i valori print("Tutte le chiavi e i valori") per x,y in my_dict.items(): print(x, “:” , y) #stampa chiavi e valori |
Produzione:
Tutte le chiavi
Elsa
Anna
Olaf
Tutti i valori
001
002
003
Tutte le chiavi e i valori
Elsa: 001
Anna: 002
Olaf: 003
Aggiornamento dei valori:
I dizionari sono tipi di dati modificabili che possono essere aggiornati quando necessario. Puoi fare come segue:-
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} my_dict['Olaf'] = '004' #Aggiornamento del valore di Dave my_dict['Kristoff'] = '005' #aggiunta di una coppia chiave-valore stampa(my_dict) |
Output : {'Elsa': '001' , 'Anna': '002' , 'Olaf': '004', 'Kristoff': '005'}
Eliminazione di elementi da un dizionario:
Puoi eliminare elementi da un dizionario con funzioni come del(), pop(), popitem(), clear(), ecc. Ad esempio:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} del my_dict['Elsa'] #rimuove la coppia chiave-valore di 'Elsa' my_dict.pop('Anna') #rimuove il valore di 'Anna' my_dict.popitem() #rimuove l'ultimo elemento inserito stampa(my_dict) |
Uscita : {'Olaf': '003'}
Conclusione
Possiamo facilmente concludere che le hashmap e le tabelle hash Python sono parte integrante per un accesso più facile e veloce ai dati rilevanti. È uno strumento prezioso per i professionisti della scienza dei dati come data scientist e analisti di dati. Se sei interessato a saperne di più sul campo della scienza dei dati, upGrad ha il miglior programma di certificazione professionale in scienza dei dati per il processo decisionale aziendale .
Che cos'è una hashmap, Python e una tabella hash, Python?
Una tabella hash aiuta a memorizzare coppie chiave-valore in cui viene generata una chiave utilizzando una funzione hash. Le hashmap o le implementazioni di tabelle hash in Python vengono eseguite con dizionari integrati.
Qual è la differenza tra una hashmap e una tabella hash Python?
Una Hashmap non è sincronizzata, ma una Hashtable è sincronizzata. Ciò significa che le tabelle hash sono thread-safe e possono essere condivise tra numerosi thread, ma HashMap necessita di una corretta sincronizzazione prima di essere condivisa.
La mappa è una tabella hash?
Una tabella hash Python, chiamata anche mappa hash, è una struttura di dati che mappa le chiavi ai valori. Utilizza la tecnica dell'hashing.