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 .
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.
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 .