TypeError: unhashable type: 'list’
TypeError: unhashable type: 'list’ zwykle oznacza, że próbujesz użyć listy jako argumentu skrótu. Oznacza to, że gdy spróbujesz zahaszować obiekt, którego nie da się zhasować, spowoduje to błąd. Dla ex. gdy używasz listy jako klucza w słowniku, nie można tego zrobić, ponieważ listy nie mogą być haszowane. Standardowym sposobem rozwiązania tego problemu jest rzucenie listy na krotkę .
przykład
wyjście
ten błąd pokazuje, że klucz my_dict to List, A List nie jest typem hashowalnym w Pythonie . Klucze słownika muszą być typami niezmiennymi, a list jest typem zmiennym.
Fix: Cast listy do krotki
będziesz musiał zmienić swoją listę na krotki, jeśli chcesz umieścić je jako klucze w słowniku .
wyjście
hash() jest wbudowaną metodą Pythona, używaną do zwracania unikalnego numeru . Można to zastosować do dowolnego obiektu zdefiniowanego przez użytkownika, który nie zostanie zmieniony po zainicjowaniu. Ta właściwość jest używana głównie w kluczach słownikowych .
przykłady nieusuwalnych obiektów:
krotka i lista
chociaż krotki mogą wydawać się podobne do list, są one często używane w różnych sytuacjach i do różnych celów. Krotki są niezmienne i zazwyczaj zawierają heterogeniczną sekwencję elementów, do których można uzyskać dostęp poprzez rozpakowanie lub indeksowanie . Listy są zmienne, a ich elementy są zwykle jednorodne i są dostępne przez iterację nad listą.
hashowanie
hashowanie jest pojęciem w informatyce , które jest używane do tworzenia wysokiej wydajności, pseudo-random access struktur danych, w których duża ilość danych ma być przechowywana i szybko uzyskiwać do niej dostęp. Obiekty niezmienne lub obiekty, których nie można zmienić, można hashować i mają jedną unikalną wartość, która nigdy się nie zmieni. Funkcja haszująca jest funkcją, która przyjmuje obiekt, powiedzmy łańcuch taki jak „Java” i zwraca kod o stałym rozmiarze, zakładając, że zwracana wartość jest liczbą całkowitą .