We could introduce parallel kinds of collections: ValueList/IdentityList, ValueDict/IdentityDict, etc. Ones would use comparison by value and do not preserve identity (so we could use more efficient storage for homogeneous collections, for example a list of small ints could spend 1 byte/item). And others would use comparison by identity.
IdentityDict was already discussed before. There is a demand on this feature, but it is not large if keep backward compatibility. There is a workaround (a dict of id(key) to a tuple of (key, value)), which is not compatible with IdentityDict, so the latter can be a replacement in a public API.