TypeError: unhashable type: ‘list’
TypeError: unhashable type: ‘list’ betekent meestal dat u probeert een lijst te gebruiken als een hash argument. Dit betekent dat wanneer u probeert om een unhashable object hash het zal resulteren in een fout. Voor ex. wanneer je een lijst als sleutel in het woordenboek gebruikt , kan dit niet gedaan worden omdat lijsten niet gehasht kunnen worden. De standaard manier om dit probleem op te lossen is om een lijst naar een tupel te werpen .
voorbeeld
uitvoer
deze fout laat zien dat de mijn_dict sleutel lijst is en lijst geen hashable type is in Python . Dictionary keys moeten onveranderlijke types zijn en list is een veranderlijk type.
Fix: Cast list naar een tupel
u moet uw lijst wijzigen in tupels als u ze als sleutels in uw woordenboek wilt plaatsen .
output
de hash() is een ingebouwde python methode, gebruikt om een uniek nummer te retourneren . Dit kan worden toegepast op elk door de gebruiker gedefinieerd object dat niet zal veranderen zodra geïnitialiseerd. Deze eigenschap wordt voornamelijk gebruikt in woordenboektoetsen .
voorbeelden van niet-uitwisbare objecten:
tupel en lijst
hoewel tupels kunnen lijken op lijsten, worden ze vaak gebruikt in verschillende situaties en voor verschillende doeleinden. Tupels zijn onveranderlijk, en bevatten meestal een heterogene opeenvolging van elementen die worden benaderd via uitpakken of indexeren . Lijsten zijn veranderlijk, en hun elementen zijn meestal homogeen en worden benaderd door itereren over de lijst.
Hashing
Hashing is een concept in de informatica dat wordt gebruikt om high performance , pseudo random access datastructuren te creëren waar grote hoeveelheden gegevens snel moeten worden opgeslagen en benaderd. Onveranderlijke objecten, of objecten die niet kunnen worden gewijzigd, zijn hashable en ze hebben een enkele unieke waarde die nooit zal veranderen. Een hashing functie is een functie die een object neemt, bijvoorbeeld een string zoals “Java” en een vaste-grootte code retourneert, veronderstel dat de retourwaarde een geheel getal is .