Tabele skrótów i mapy skrótów w Pythonie

Opublikowany: 2022-11-06

Dostęp do danych lub ich przechowywanie wymaga wielu sposobów. Tabele Hash i Hashmapy są najlepszymi strukturami danych do implementacji tego w Pythonie za pomocą wbudowanego typu danych znanego jako słownik.

Hashmap lub Hash table w strukturze danych mapuje klucze na pary wartości i używa funkcji, która oblicza dowolną wartość indeksu przechowującą elementy, które mają zostać wstawione, przeszukane lub usunięte. Dzięki temu dostęp do danych jest łatwiejszy i szybszy. Tabele skrótów zazwyczaj przechowują pary klucz-wartość i używają funkcji skrótu do generowania klucza.

W tym artykule dowiesz się, czym są Hash Tables i Hashmaps oraz jak są zaimplementowane w Pythonie.

Naucz się analityki danych, aby zyskać przewagę nad konkurencją

Spis treści

Co to jest tablica mieszająca lub Hashmap Python?

Tablica mieszająca lub hashmap Python to indeksowana struktura danych. Wykorzystuje funkcje skrótu do obliczania indeksu za pomocą klucza w tablicy przedziałów lub wiader. Możesz zmapować jego wartość do zasobnika za pomocą odpowiedniego indeksu, a klucz jest niezmienny i niepowtarzalny.

Hashmapy są podobne do szafek z szufladami oznaczonymi rzeczami, które przechowują. Na przykład hashmapy mogą przechowywać w zasobniku informacje o użytkowniku, takie jak imię i nazwisko itp.

Funkcja skrótu jest integralną częścią implementacji hashmapy. Używa klucza i tłumaczy go na indeks wiadra na liście wiader. Idealne mieszanie tworzy osobny indeks dla każdego klucza. Pamiętaj jednak, że mogą wystąpić kolizje. Gdy haszowanie tworzy już istniejący indeks, można łatwo użyć wiaderka dla wielu wartości, ponownie mieszając lub dołączając listę. W Pythonie przykładem map skrótów są słowniki.

Przyjrzyjmy się szczegółowo implementacji hashmap, aby dowiedzieć się, jak dostosowywać i budować struktury danych w celu optymalizacji wyszukiwania.

Hashmap w Pythonie

Hashmap zawiera następujące funkcje:

  • set_val(klucz, wartość): Ta funkcja służy do wstawiania pary klucz-wartość do mapy mieszania. Jeśli istnieje już wartość na mapie mieszania, należy ją zaktualizować.
  • get_val(key): Ta funkcja zwraca wartość do określonego klucza, który jest mapowany lub „Nie znaleziono rekordu”, jeśli ta mapa nie ma mapowania dla klucza.
  • delete_val(key): Usuwa mapowanie dla określonego klucza, jeśli hashmap ma mapowanie dla klucza.

Realizacja:-

klasa Hashtable:

# Utwórz pustą listę wiader o podanym rozmiarze

def __init__(samo, rozmiar):

własny.rozmiar = rozmiar

self.hash_table = self.create_buckets()

def create_buckets(self):

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

# Wstaw wartości do mapy mieszania

def set_val(self, klucz, val):

# Pobierz indeks z klucza

# używanie funkcji skrótu

hashed_key = hash(key) % self.size

# Pobierz wiadro odpowiadające indeksowi

zasobnik = self.hash_table[hashed_key]

znaleziony_klucz = Fałsz

dla indeksu zapis w enumerate(bucket):

klucz_rekordu, wartość_rekordu = rekord

# sprawdź, czy wiadro ma ten sam klucz co

# klucz do włożenia

jeśli klucz_rekordu == klucz:

znaleziony_klucz = Prawda

przerwanie

# Jeśli wiadro ma ten sam klucz, co klucz do włożenia,

# Zaktualizuj wartość klucza

# W przeciwnym razie dołącz do zasobnika nową parę klucz-wartość

jeśli znaleziono_klucz:

wiadro[indeks] = (klucz, val)

w przeciwnym razie:

bucket.append((klucz, val))

# Zwróć szukaną wartość za pomocą określonego klucza

def get_val(self, klucz):

# Pobierz indeks z klucza za pomocą

# funkcja skrótu

hashed_key = hash(key) % self.size

# Pobierz wiadro odpowiadające indeksowi

zasobnik = self.hash_table[hashed_key]

znaleziony_klucz = Fałsz

dla indeksu zapis w enumerate(bucket):

klucz_rekordu, wartość_rekordu = rekord

# sprawdź, czy wiadro ma ten sam klucz co

# klucz jest przeszukiwany

jeśli klucz_rekordu == klucz:

znaleziony_klucz = Prawda

przerwanie

# Jeśli wiadro ma ten sam klucz, co przeszukiwany klucz,

# Zwróć znalezioną wartość

# W przeciwnym razie wskaż, że nie znaleziono żadnego rekordu

jeśli znaleziono_klucz:

zwróć wartość_rekordu

w przeciwnym razie:

return „Nie znaleziono rekordu”

# Usuń wartość za pomocą określonego klucza

def delete_val(self, klucz):

# Pobierz indeks z klucza za pomocą

# funkcja skrótu

hashed_key = hash(key) % self.size

# Pobierz wiadro odpowiadające indeksowi

zasobnik = self.hash_table[hashed_key]

znaleziony_klucz = Fałsz

dla indeksu zapis w enumerate(bucket):

klucz_rekordu, wartość_rekordu = rekord

# sprawdź, czy wiadro ma ten sam klucz co

# klucz do usunięcia

jeśli klucz_rekordu == klucz:

znaleziony_klucz = Prawda

przerwanie

jeśli znaleziono_klucz:

wiadro.pop(indeks)

zwrócić

# Aby wydrukować elementy mapy hash

def __str__(samo):

zwróć „”.join(str(item) dla pozycji w self.hash_table)

hash_table = HashTable(50)

# wstaw kilka wartości

hash_table.set_val([email protected]', 'jakaś wartość')

drukuj(tabela_z haszami)

wydrukować()

hash_table.set_val('[email protected]', 'inna wartość')

drukuj(tabela_z haszami)

wydrukować()

# wyszukaj / uzyskaj dostęp do rekordu za pomocą klawisza

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

wydrukować()

# usuń lub usuń wartość

hash_table.delete_val('[email protected]')

drukuj(tabela_z haszami)

Wyjście:-

[][][][][][][][][][][][][][][][][][][][] ([email protected]', „pewna wartość”) ][][][][][][][][][][][][][][][][][][][][][] [][][][]

[][][][][][][][][][][][][][][][][][][][] ([email protected]', 'jakaś wartość') ][][][][][][('[email protected]', 'jakaś inna wartość')][][][][][][][][][ ][][][][][][][][][][][][]

Inna wartość

[][][][][][][][][][][][][][][][][][][][] ([email protected]', „pewna wartość”) ][][][][][][][][][][][][][][][][][][][][][] [][][][]

Sprawdź nasze amerykańskie programy nauki o danych

Profesjonalny program certyfikacji w dziedzinie nauki o danych i analityki biznesowej Master of Science in Data Science Master of Science in Data Science Zaawansowany program certyfikacji w nauce o danych
Program Executive PG w dziedzinie nauki o danych Kurs programowania w Pythonie Profesjonalny program certyfikatów w dziedzinie nauki o danych do podejmowania decyzji biznesowych Zaawansowany program w nauce o danych

Wykonywanie operacji na tablicach mieszających za pomocą słowników:

Istnieje wiele operacji, które można wykonać w Pythonie na tablicach mieszających za pomocą słowników. Są to:-

  • Dostęp do wartości
  • Aktualizowanie wartości
  • Usuwanie elementu

Dostęp do wartości:

Możesz łatwo uzyskać dostęp do wartości słownika w następujący sposób: –

  • Korzystanie z kluczowych wartości
  • Korzystanie z funkcji
  • Implementacja pętli for

Używając kluczowych wartości:

Możesz uzyskać dostęp do wartości słownika za pomocą wartości klucza, jak poniżej: –

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

mój_dykt['Anna']

Wyjście: '002′

Korzystanie z funkcji:

Istnieje wiele wbudowanych funkcji, takich jak get(), keys(), values() itp.

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

print(my_dict.keys())

print(my_dict.values())

print(my_dict.get('Elsa'))

Wyjście:-

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

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

001

Implementacja pętli for:

Pętla umożliwia dostęp do par klucz-wartość słownika poprzez iterację po nich. Na przykład:

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

print("Wszystkie klucze")

dla x w my_dict:

print(x) #wypisuje klawisze

print("Wszystkie wartości")

dla x w my_dict.values():

print(x) #wydrukowuje wartości

print("Wszystkie klucze i wartości")

dla x,y w my_dict.items():

print(x, “:” , y) #wypisuje klucze i wartości

Wyjście:

Wszystkie klawisze

Elsa

Ania

Olaf

Wszystkie wartości

001

002

003

Wszystkie klucze i wartości

Elsa: 001

Anna : 002

Olaf: 003

Aktualizowanie wartości:

Słowniki to zmienne typy danych, które można aktualizować w razie potrzeby. Możesz zrobić w następujący sposób:-

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

my_dict['Olaf'] = '004' #Aktualizacja wartości Dave

my_dict['Kristoff'] = '005' #dodawanie pary klucz-wartość

drukuj(my_dykt)

Dane wyjściowe : {'Elsa': '001' , 'Anna': '002' , 'Olaf': '004', 'Kristoff': '005'}

Usuwanie pozycji ze słownika:

Możesz usuwać elementy ze słownika za pomocą funkcji takich jak del(), pop(), popitem(), clear() itp. Na przykład:

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

del my_dict['Elsa'] #usuwa parę klucz-wartość 'Elsa'

my_dict.pop('Anna') #usuwa wartość 'Anna'

my_dict.popitem() #usuwa ostatnio wstawiony element

drukuj(my_dykt)

Dane wyjściowe : {'Olaf': '003'}

Wniosek

Możemy łatwo wywnioskować, że hashmapy i hash table Python są integralną częścią dla łatwiejszego i szybszego dostępu do odpowiednich danych. Jest to cenne narzędzie dla specjalistów zajmujących się analizą danych, takich jak naukowcy danych i analitycy danych. Jeśli chcesz dowiedzieć się więcej o dziedzinie Data Science, upGrad ma najlepszy profesjonalny program certyfikacji w dziedzinie Data Science do podejmowania decyzji biznesowych .

Co to jest hashmap (Python) i tablica skrótów (Python)?

Tablica haszująca pomaga w przechowywaniu par klucz-wartość, w których klucz jest generowany przy użyciu funkcji skrótu. Hashmapy lub implementacje hashtable w Pythonie są wykonywane za pomocą wbudowanych słowników.

Jaka jest różnica między hashmapą a tablicą haszującą w Pythonie?

Hashmap jest niezsynchronizowany, ale Hashtable jest zsynchronizowany. Oznacza to, że tablice Hash są bezpieczne dla wątków i mogą być współdzielone przez wiele wątków, ale HashMap wymaga odpowiedniej synchronizacji przed udostępnieniem.

Czy mapa jest tablicą haszującą?

Tablica skrótów Python, zwana także mapą skrótów, jest strukturą danych mapującą klucze do wartości. Wykorzystuje technikę haszowania.