This is complexity O(N), where N is max_size of hash_table:
return len([x for x in self])
and this should be with complexity O(1):
But how about the size of has_table when counting only used indices?
#Get rid of indices with None, complexity O(N)
return [x for x in self if x is not None]
#Hash_table size without None indices, complexity O(N) depends on size N of hashed dict
return len([x for x in shrink_hash_table(self)])
Am I right?