Collections Module
Python · Reference cheat sheet
Collections Module
Python · Reference cheat sheet
📋 Overview
collections provides specialized container types beyond built-in list/dict/set. Reach for them when counting, defaulting, dequeuing, or naming tuples.
🔧 Core concepts
| Type | Use |
|---|---|
Counter | Multiset / tallies |
defaultdict | Dict with factory for missing keys |
deque | Fast append/pop both ends |
namedtuple | Lightweight immutable records |
OrderedDict | Rarely needed (dict keeps order) |
ChainMap | Layered mappings |
UserDict / UserList | Wrap for subclassing |
Also see collections.abc for abstract interfaces (Iterable, Mapping, …).
💡 Examples
Counter:
from collections import Counter
counts = Counter("abracadabra")
print(counts.most_common(3))
print(counts["a"])
counts.update("aaa")defaultdict:
from collections import defaultdict
groups: defaultdict[str, list[int]] = defaultdict(list)
for n in [1, 2, 3, 4]:
groups["even" if n % 2 == 0 else "odd"].append(n)deque as queue:
from collections import deque
q: deque[str] = deque(maxlen=3)
q.append("a")
q.append("b")
q.appendleft("z")
print(q.popleft())namedtuple / ChainMap:
from collections import ChainMap, namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(1, 2)
defaults = {"color": "blue", "size": 10}
overrides = {"size": 12}
cfg = ChainMap(overrides, defaults)
print(cfg["color"], cfg["size"])⚠️ Pitfalls
defaultdictcreates entries on__getitem__— use.getif you must not insert.Countermissing keys return0, notKeyError.namedtupleis immutable; for mutability use dataclass.OrderedDictequality historically cared about order — prefer plaindict.dequeis not sliceable like a list.