Don't you mean a python set? But yes, for use cases containing many duplicates where the result easily fits in memory, that is probably the fastest.
In fact, that's exactly how Rust's standard library hashset is implemented since rust supports zero-sized types "in userland" (and unit `()` is a ZST):
pub struct HashSet<T, S = RandomState> {
map: HashMap<T, (), S>
}
http://doc.rust-lang.org/src/std/collections/hash/set.rs.htm...