Tabele skrótów i mapy skrótów w Pythonie
Opublikowany: 2022-11-06Dostę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ą
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.