Why are tuples immutable?

Roy Smith roy at panix.com
Wed Dec 15 11:07:47 EST 2004


Jp Calderone  <exarkun at divmod.com> wrote:
>  Dictionaries support mutable keys just find.  What they don't 
>support is unhashable keys.  
>
>  For some objects, this is an important distinction: lists are 
>mutable but not hashable.

Of course, you could subclass list to make a mutable, hashable list:


class HashableList (list):
    def __hash__ (self):
        return sum (self)

myList = HashableList ((1, 2, 3))

d = {myList: "fred"}

print d
print d [myList]

myList.append (0)
print d [myList]

myList.append (42)
try:
    print d [myList]
except KeyError:
    print "didn't work because the hash changed"



More information about the Python-list mailing list