Hashtabellen und Hashmaps in Python

Veröffentlicht: 2022-11-06

Daten erfordern mehrere Möglichkeiten, auf sie zuzugreifen oder sie zu speichern. Hash-Tabellen und Hashmaps sind zufällig die besten Datenstrukturen, um dies in Python über den integrierten Datentyp, der als Wörterbuch bekannt ist, zu implementieren.

Eine Hashmap oder eine Hash-Tabelle in einer Datenstruktur ordnet Schlüssel ihren Wertepaaren zu und verwendet eine Funktion, die jeden Indexwert berechnet, der die einzufügenden, zu durchsuchenden oder zu entfernenden Elemente enthält. Dadurch wird der Datenzugriff einfacher und schneller. Hash-Tabellen speichern im Allgemeinen Schlüssel-Wert-Paare und verwenden die Hash-Funktion zum Generieren eines Schlüssels.

In diesem Artikel erfahren Sie, was Hash-Tabellen und Hashmaps sind und wie sie in Python implementiert werden.

Lernen Sie Data Science, um sich einen Vorteil gegenüber Ihren Mitbewerbern zu verschaffen

Inhaltsverzeichnis

Was ist eine Hash-Tabelle oder eine Hashmap-Python?

Eine Hash-Tabelle oder Hashmap Python ist eine indizierte Datenstruktur. Es verwendet Hash-Funktionen, um einen Index zu berechnen, indem es einen Schlüssel in einem Array von Slots oder Buckets verwendet. Sie können seinen Wert mithilfe des entsprechenden Index einem Bucket zuordnen, und der Schlüssel ist unveränderlich und eindeutig.

Hashmaps ähneln einem Schubladenschrank, der mit den Dingen beschriftet ist, die sie speichern. Beispielsweise können Hashmaps Benutzerinformationen wie Vor- und Nachname usw. im Bucket speichern.

Die Hash-Funktion ist integraler Bestandteil der Implementierung einer Hashmap. Es verwendet den Schlüssel und übersetzt ihn in den Bucket-Index in der Bucket-Liste. Ideales Hashing erzeugt für jeden Schlüssel einen separaten Index. Beachten Sie jedoch, dass es zu Kollisionen kommen kann. Wenn Hashing einen bereits vorhandenen Index erzeugt, kann ein Bucket für mehrere Werte einfach verwendet werden, indem eine Liste erneut gehasht oder angehängt wird. Ein Beispiel für Hash-Maps in Python sind Wörterbücher.

Sehen wir uns die Hashmap-Implementierung im Detail an, um zu erfahren, wie man Datenstrukturen für die Suchoptimierung anpasst und erstellt.

Hashmap in Python

Die Hashmap enthält die folgenden Funktionen:

  • set_val(key, value): Diese Funktion wird verwendet, um ein Schlüssel-Wert-Paar in die Hash-Map einzufügen. Wenn in der Hash-Map bereits ein Wert vorhanden ist, müssen Sie den Wert aktualisieren.
  • get_val(key): Diese Funktion gibt den Wert auf den angegebenen Schlüssel zurück, der zugeordnet ist, oder „Kein Datensatz gefunden“, wenn diese Zuordnung keine Zuordnung für den Schlüssel hat.
  • delete_val(key): Löscht die Zuordnung für den bestimmten Schlüssel, wenn die Hashmap die Zuordnung für den Schlüssel enthält.

Implementierung:-

Klasse Hashtable:

# Erstellen Sie eine leere Bucket-Liste der angegebenen Größe

def __init__(selbst, Größe):

self.size = Größe

self.hash_table = self.create_buckets()

def create_buckets(selbst):

return [[] for _ in range(self.size)]

# Werte in die Hash-Map einfügen

def set_val(selbst, Schlüssel, Wert):

# Holen Sie sich den Index aus dem Schlüssel

# Hash-Funktion verwenden

hashed_key = hash(key) % self.size

# Holen Sie sich den Bucket, der dem Index entspricht

Bucket = self.hash_table[gehashter_Schlüssel]

found_key = Falsch

für Index in enumerate(bucket) aufzeichnen:

record_key, record_val = record

# prüfen, ob der Bucket den gleichen Schlüssel hat wie

# der einzufügende Schlüssel

if record_key == Schlüssel:

found_key = Wahr

Unterbrechung

# Wenn der Bucket denselben Schlüssel hat wie der einzufügende Schlüssel,

# Aktualisieren Sie den Schlüsselwert

# Anderenfalls das neue Schlüssel-Wert-Paar an den Bucket anhängen

if found_key:

Bucket[Index] = (Schlüssel, Wert)

anders:

Bucket.append ((Schlüssel, Wert))

# Gesuchten Wert mit spezifischem Schlüssel zurückgeben

def get_val(selbst, Schlüssel):

# Holen Sie sich den Index aus dem Schlüssel mit

# Hash-Funktion

hashed_key = hash(key) % self.size

# Holen Sie sich den Bucket, der dem Index entspricht

Bucket = self.hash_table[gehashter_Schlüssel]

found_key = Falsch

für Index in enumerate(bucket) aufzeichnen:

record_key, record_val = record

# prüfen, ob der Bucket den gleichen Schlüssel hat wie

# der gesuchte Schlüssel

if record_key == Schlüssel:

found_key = Wahr

Unterbrechung

# Wenn der Bucket denselben Schlüssel hat wie der gesuchte Schlüssel,

# Den gefundenen Wert zurückgeben

# Andernfalls zeigen Sie an, dass kein Datensatz gefunden wurde

if found_key:

record_val zurückgeben

anders:

Rückgabe "Kein Datensatz gefunden"

# Entfernen Sie einen Wert mit einem bestimmten Schlüssel

def delete_val(selbst, Schlüssel):

# Holen Sie sich den Index aus dem Schlüssel mit

# Hash-Funktion

hashed_key = hash(key) % self.size

# Holen Sie sich den Bucket, der dem Index entspricht

Bucket = self.hash_table[gehashter_Schlüssel]

found_key = Falsch

für Index in enumerate(bucket) aufzeichnen:

record_key, record_val = record

# prüfen, ob der Bucket den gleichen Schlüssel hat wie

# der zu löschende Schlüssel

if record_key == Schlüssel:

found_key = Wahr

Unterbrechung

if found_key:

Bucket.pop (Index)

Rückkehr

# Um die Elemente der Hash-Map zu drucken

def __str__(selbst):

return „.join(str(item) for item in self.hash_table)

hash_table = HashTable(50)

# einige Werte einfügen

hash_table.set_val([email protected]', 'irgendein Wert')

print(hash_table)

drucken()

hash_table.set_val('[email protected]', 'ein anderer Wert')

print(hash_table)

drucken()

# suche/greife auf einen Datensatz mit der Taste zu

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

drucken()

# einen Wert löschen oder entfernen

hash_table.delete_val('[email protected]')

print(hash_table)

Ausgabe:-

[][][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'irgendein Wert') ][][][][][][][][][][][][][][][][][][][][][][][][] [][][][]

[][][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'irgendein Wert') ][][][][][][('[email protected]', 'ein anderer Wert')][][][][][][][][][][] ][][][][][][][][][][][][][][]

Irgendein anderer Wert

[][][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'irgendein Wert') ][][][][][][][][][][][][][][][][][][][][][][][][] [][][][]

Sehen Sie sich unsere US - Data Science-Programme an

Professional Certificate Program in Data Science und Business Analytics Master of Science in Datenwissenschaft Master of Science in Datenwissenschaft Advanced Certificate Program in Data Science
Executive PG-Programm in Data Science Bootcamp für Python-Programmierung Professional Certificate Program in Data Science für die Entscheidungsfindung in Unternehmen Fortgeschrittenes Programm in Data Science

Durchführen von Operationen an Hash-Tabellen mit Wörterbüchern:

Es gibt zahlreiche Operationen, die in Python auf Hash-Tabellen über Wörterbücher ausgeführt werden können. Sie sind wie folgt:-

  • Zugriff auf Werte
  • Aktualisieren von Werten
  • Element löschen

Zugriff auf Werte:

Sie können auf folgende Weise einfach auf die Werte eines Wörterbuchs zugreifen:-

  • Verwenden von Schlüsselwerten
  • Funktionen verwenden
  • Implementieren der for-Schleife

Verwenden von Schlüsselwerten:

Sie können auf Wörterbuchwerte zugreifen, indem Sie die folgenden Schlüsselwerte verwenden: -

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

mein_dict['Anna']

Ausgabe: '002'

Funktionen verwenden:

Es gibt zahlreiche eingebaute Funktionen wie get(), keys(), values() usw.

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

print(my_dict.keys())

print(my_dict.values())

print(my_dict.get('Elsa'))

Ausgabe:-

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

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

001

Implementieren der for-Schleife:

Die Schleife gibt Ihnen Zugriff auf die Schlüssel-Wert-Paare eines Wörterbuchs, indem Sie sie durchlaufen. Zum Beispiel:

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

print("Alle Tasten")

für x in my_dict:

print(x) #druckt die Schlüssel

print(“Alle Werte”)

für x in my_dict.values():

print(x) #druckt Werte

print("Alle Schlüssel und Werte")

für x,y in my_dict.items():

print(x, „:“ , y) #druckt Schlüssel und Werte

Ausgabe:

Alle Schlüssel

Elsa

Anna

Olaf

Alle Werte

001

002

003

Alle Schlüssel und Werte

Elsa: 001

Anna: 002

Olaf: 003

Werte aktualisieren:

Wörterbücher sind veränderliche Datentypen, die bei Bedarf aktualisiert werden können. Sie können wie folgt vorgehen:-

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

my_dict['Olaf'] = '004' #Aktualisiere den Wert von Dave

my_dict['Kristoff'] = '005' #Hinzufügen eines Schlüssel-Wert-Paares

print(my_dict)

Ausgabe : {'Elsa': '001' , 'Anna': '002' , 'Olaf': '004', 'Kristoff': '005'}

Elemente aus einem Wörterbuch löschen:

Sie können Elemente aus einem Wörterbuch mit Funktionen wie del(), pop(), popitem(), clear() usw. löschen. Zum Beispiel:

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

del my_dict['Elsa'] #entfernt das Schlüssel-Wert-Paar von 'Elsa'

my_dict.pop('Anna') #entfernt den Wert von 'Anna'

my_dict.popitem() #entfernt das zuletzt eingefügte Element

print(my_dict)

Ausgabe : {'Olaf': '003'}

Fazit

Wir können leicht schlussfolgern, dass Hashmaps und Hashtabellen von Python für einen einfacheren und schnelleren Zugriff auf relevante Daten unerlässlich sind. Es ist ein wertvolles Tool für Data-Science-Experten wie Data Scientists und Datenanalysten. Wenn Sie mehr über den Bereich Data Science erfahren möchten, bietet upGrad das beste Professional Certificate Program in Data Science für die Entscheidungsfindung in Unternehmen .

Was ist eine Hashmap, Python, und eine Hashtabelle, Python?

Eine Hash-Tabelle hilft beim Speichern von Schlüssel-Wert-Paaren, wenn ein Schlüssel mithilfe einer Hash-Funktion generiert wird. Hashmaps oder Hashtable-Implementierungen in Python werden mit integrierten Wörterbüchern erstellt.

Was ist der Unterschied zwischen einer Hashmap und einer Hashtabelle Python?

Eine Hashmap ist nicht synchronisiert, aber eine Hashtable ist synchronisiert. Das bedeutet, dass Hash-Tabellen Thread-sicher sind und von zahlreichen Threads gemeinsam genutzt werden können, aber HashMap benötigt eine ordnungsgemäße Synchronisierung, bevor sie gemeinsam genutzt werden kann.

Ist map ein Hashtable?

Eine Hash-Tabelle Python, auch Hash-Map genannt, ist eine Datenstruktur, die Schlüssel auf Werte abbildet. Es verwendet die Hash-Technik.