Jednak klucz do słownika Pythona musi być haszalny. Obiekt haszalny oznacza, że obiekt jest niezmienny i może wytworzyć unikalną wartość skrótu.
Stąd użycie nieobsisowanego obiektu jako klucza słownika spowoduje błąd.
Omówmy, w jaki sposób możemy rozwiązać ten błąd.
Przykładowy błąd
Rozważ poniższy kod, który ilustruje, jak występuje ten rodzaj błędu.
programistowie = „Gry”: 200, „baza danych”: 100, „Full_stack”: 500W powyższym przykładzie zaczynamy od zdefiniowania słownika, który zawiera rodzaj programisty i całkowitą liczbę.
Tworzymy słownik pracownika, który przyjmuje słownik dewelopera jako klucz w drugiej części.
Ponieważ słownik jest nie do zaprzestania, Python nie może go użyć jako klucza słownika.
Python sprawdź, czy obiekt jest haszalny
Przychodzi pytanie, skąd mam wiedzieć, czy obiekt jest haszalny, czy nie? W Python możesz użyć funkcji skrótu, aby ustalić, czy obiekt jest haszalny.
Przykładem jest jak pokazano:
>>> Hash („Key”)Jeśli obiekt jest haszalny, powinien zwrócić unikalny skrót, jak pokazano w powyższym przykładzie. Ponieważ ciąg jest haszalny, zwraca unikalny skrót.
Jeśli spróbujesz tej samej operacji na słowniku lub na liście, otrzymasz błąd, jak pokazano:
>>> Hash ([1,2,3,4,5])Nie jest to haszalne, ponieważ lista jest zmienna, jak pokazano na powyższym błędzie.
Napraw: TypeError: Bezpchakowany typ: „DICT”
Jeśli chcesz użyć słownika jako klucza do innego słownika, możesz to zrobić, najpierw przekształcając go w krotek.
Tuple jest haszalny, jak pokazano w poniższym przykładzie:
>>> Hash ((1,2,3,4,5))Rozwiążmy nasz pierwszy błąd, przekształcając słownik dewelopera w krotek:
>>> Programiści = tuple (programiści)Po przekształceniu go w krotek możemy użyć go jako klucza w słowniku, jak pokazano:
>>> Pracownicy = programistów: 800Napraw 2
Innym rozwiązaniem jest użycie słownika jako wartości. Na przykład możemy wykorzystać słownik dewelopera jako wartość dla słownika pracowników.
Weź ilustrację kodu poniżej:
>>> Programiści = „gry”: 200, „baza danych”: 100, „Full_stack”: 500W takim przypadku kod nie zwraca błędu, ponieważ używamy słownika jako wartości dla nowego słownika.
Używając pętli
Inną niekonwencjonalną metodą jest stosowanie pętli dla. Możesz iterować każdy klucz i docenić parę jednego słownika i dodać je do nowego słownika.
Rozważ poniższy przykład:
>>> Programiści = „gry”: 200, „baza danych”: 100, „Full_stack”: 500W takim przypadku używamy pętli do iteracji w stosunku do słowników programistów i dołączamy je do dyktowania pracowników.
Zamknięcie
W tym artykule zbadano trzy metody naprawy błędu „TypeError: Bezblashable:„ Dict ”” w Pythonie.