(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?
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...
[1] http://docs.ruby-lang.org/en/2.0.0/Hash.html#method-i-rehash
Ruby, since you said it allows mutable keys in dictionaries.
> Anyway, both languages use value-based hashing for dictionaries.
Neither Python nor Ruby has compound values. Object identities are primitive values.
> but I guess you are just expected to not mutate the keys?
I guess C programmers are expected not to use memory after they free it.