TypeError: unhashable typu: „seznam“

TypeError: unhashable typu: „seznam“ obvykle znamená, že se pokoušíte použít seznam jako argument hash. To znamená, že při pokusu o hašování nemytitelného objektu dojde k chybě. Pro ex. Používáte-li seznam jako klíč ve slovníku , nelze to provést, protože seznamy nelze hashovat. Standardní způsob, jak tento problém vyřešit, je obsazení seznamu do n-tice .

co je Python: TypeError: unhashable type:

příklad

výstup

Tato chyba ukazuje, že my_dict klíč je Seznam a Seznam není hashable typ v jazyce Python . Slovník klíče musí být neměnné typy a seznam je proměnlivý Typ.

Oprava: obsazení seznamu do n-tice

budete muset změnit seznam do n-tic, pokud je chcete dát jako klíče ve slovníku .

výstup

hash () je vestavěná metoda Pythonu, která se používá k vrácení jedinečného čísla . To lze použít na libovolný uživatelem definovaný objekt, který se po inicializaci nezmění. Tato vlastnost se používá hlavně ve slovníkových klíčích .

Příklady Unhashable objekty:

Tuple a Seznam

Když n-tice se mohou zdát podobné seznamy, oni jsou často používány v různých situacích a pro různé účely. N-tice jsou neměnné a obvykle obsahují heterogenní posloupnost prvků, ke kterým se přistupuje pomocí rozbalení nebo indexování . Seznamy jsou proměnlivé a jejich prvky jsou obvykle homogenní a jsou přístupné iterací přes seznam.

Python Tuple a Seznam

Hash

Hash je koncept v oblasti počítačové vědy, který se používá k vytvoření vysoký výkon , pseudo random access datové struktury, kde je velké množství dat, které je třeba skladovat a přistupovat rychle. Neměnné objekty nebo objekty, které nelze změnit, jsou hashovatelné a mají jedinou jedinečnou hodnotu, která se nikdy nezmění. Hashovací funkce je funkce, která vezme objekt, řekněme řetězec jako „Java“ a vrátí kód s pevnou velikostí, předpokládejme, že návratová hodnota je celé číslo .