Tabelle hash e mappe hash in Python

Pubblicato: 2022-11-06

I 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

Sommario

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.