Co to są tabele skrótów? Gdzie jest hash w tabeli skrótów? Poniżej wyjaśniono, jaki hash jest obliczany dla adresu wartości indeksu. Ale nie widzimy żadnych haszów See, zamiast tego używany jest klucz.

Aby uzyskać dostęp do elementów słownika, możesz użyć znanych nawiasów kwadratowych wraz z kluczem, aby uzyskać jego wartość.

# Declare a dictionary 
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

# Accessing the dictionary with its key
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

https://www.tutorialspoint.com/python_data_structure/python_hash_table.htm

Tabele skrótów to rodzaj struktury danych, w której adres lub wartość indeksu elementu danych jest generowana z funkcji skrótu. To sprawia, że dostęp do danych jest szybszy, ponieważ wartość indeksu zachowuje się jak klucz dla wartości danych. Innymi słowy, tabela Hash przechowuje pary klucz-wartość, ale klucz jest generowany za pomocą funkcji mieszającej.

Zatem funkcja wyszukiwania i wstawiania elementu danych staje się znacznie szybsza, ponieważ same wartości klucza stają się indeksem tablicy, w której są przechowywane dane.

W Pythonie typy danych Dictionary reprezentują implementację tabel skrótów. Klucze w słowniku spełniają następujące wymagania.

Klucze słownika są hashable, tj. Są generowane przez funkcję haszującą, która generuje unikalny wynik dla każdej unikalnej wartości dostarczonej do funkcji skrótu. Kolejność elementów danych w słowniku nie jest ustalona.

-1
Majoris 19 grudzień 2019, 20:52
Sam hash w tabeli jest zwykle oderwany od użytkownika/programisty. Powinieneś patrzeć na to wyłącznie jako na szczegół implementacji. Możesz użyć __hash__, aby zaimplementować własną funkcję mieszającą dla obiektu. Jeśli chcesz wiedzieć, co się dzieje pod maską, możesz zobaczyć implementacja cpythona dict
 – 
C.Nivs
19 grudzień 2019, 21:01

1 odpowiedź

Metoda __hash__ jest stosowana wewnętrznie do dostarczonego klucza. Możesz zastąpić tę funkcję dla tworzonych klas. Domyślna funkcja mieszająca jest zależna od implementacji. Możesz zobaczyć implementacje CPython (wydaje się, że używają różnych funkcji na różnych typach danych) tu.

0
Personman 19 grudzień 2019, 21:00
Tylko pytanie wyjaśniające: czy metoda __hash__ nie jest stosowana do podanej wartości i wynika w kluczu?
 – 
Aroic
19 grudzień 2019, 21:02
Nie. Wartości w tabelach mieszających nie są haszowane, tylko klucze. Wynik mieszania klucza określa, gdzie w tabeli jest przechowywana wartość, więc można ją znaleźć, podając klucz (który jest ponownie zahaszowany, aby go wyszukać).
 – 
Personman
19 grudzień 2019, 21:04
Dziękuję za wyjaśnienie!
 – 
Aroic
19 grudzień 2019, 21:06