Hash structures across four languages

Map + set: create / insert / “have I seen X?” / delete / iterate. All operations average O(1); iteration is O(n). Worst case is O(n) under pathological collisions — ignore that in interviews unless asked.

Python — dict / set

hash map (dict)hash set (set)
createm = {}s = set()
insertm[k] = vs.add(x)
seen X?k in mx in s
deletedel m[k] / m.pop(k, None)s.discard(x)
iteratefor k, v in m.items():for x in s:

Go — map[K]V / map[T]struct{}

hash maphash set (idiom)
createm := map[string]int{}s := map[string]struct{}{}
insertm[k] = vs[x] = struct{}{}
seen X?_, ok := m[k]_, ok := s[x]
deletedelete(m, k)delete(s, x)
iteratefor k, v := range m {}for x := range s {}

TypeScript — Map / Set

hash map (Map)hash set (Set)
createconst m = new Map<string, number>()const s = new Set<number>()
insertm.set(k, v)s.add(x)
seen X?m.has(k)s.has(x)
deletem.delete(k)s.delete(x)
iteratefor (const [k, v] of m) {}for (const x of s) {}

C++ — unordered_map / unordered_set

hash maphash set
createunordered_map<string, int> m;unordered_set<int> s;
insertm[k] = v;s.insert(x);
seen X?m.count(k) / m.contains(k)s.count(x) / s.contains(x)
deletem.erase(k);s.erase(x);
iteratefor (auto& [k, v] : m) {}for (auto& x : s) {}