Python dictionary : TypeError: unhashable type: 'list'


Question

I'm having troubles in populating a python dictionary starting from another dictionary.

Let's assume that the "source" dictionary has string as keys and has a list of custom objects per value.

I'm creating my target dictionary exactly as I have been creating my "source" dictionary how is it possible this is not working ?

I get

TypeError: unhashable type: 'list'

Code :

aTargetDictionary = {}
for aKey in aSourceDictionary:
    aTargetDictionary[aKey] = []
    aTargetDictionary[aKey].extend(aSourceDictionary[aKey])

The error is on this line : aTargetDictionary[aKey] = []

1
53
12/26/2014 6:02:38 PM

The error you gave is due to the fact that in python, dictionary keys must be immutable types (if key can change, there will be problems), and list is a mutable type.

Your error says that you try to use a list as dictionary key, you'll have to change your list into tuples if you want to put them as keys in your dictionary.

According to the python doc :

The only types of values not acceptable as keys are values containing lists or dictionaries or other mutable types that are compared by value rather than by object identity, the reason being that the efficient implementation of dictionaries requires a key’s hash value to remain constant

46
12/21/2015 9:21:51 PM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon