I'm not sure if you are asking about Python, or Ruby.
Anyway, both languages use value-based hashing for dictionaries. I am not a Rubyist, but I guess you are just expected to not mutate the keys? Ruby's dictionary implementation also has a rehash method to deal with this case [1], if for some reason you are purposely mutating the keys I suppose...
(0) Object identities are used as keys? (e.g., two different list objects that contain the elements 1,2,3 are treated as different keys)
(1) Catastr... I mean, hilarious things happen if you mutate an object that's being used as a key?