Hashtabellen und Hashmaps in Python
Veröffentlicht: 2022-11-06Daten 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
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.