CodeNebula
Python📦Standard Libraryintermediate

`collections` — High-Performance Containers

Python · Standard Library · Run with python3

Explanation

The `collections` module provides specialized container types. `Counter` counts hashable objects; `defaultdict` returns a default value for missing keys; `deque` is a double-ended queue with O(1) appends/pops from both ends; `OrderedDict` remembers insertion order (built-in `dict` also does since Python 3.7, but `OrderedDict` has `move_to_end`); `namedtuple` creates tuple subclasses with named fields; `ChainMap` combines multiple mappings into a single view.

Real-World Scenario

Word frequency analysis: `Counter(text.lower().split()).most_common(10)` gives the top 10 words in one line. A BFS algorithm uses `deque` as a queue — `deque.appendleft`/`popleft` are O(1), unlike `list.insert(0, ...)` which is O(n). ```python from collections import Counter, defaultdict, deque, namedtuple # Counter words = "the quick brown fox jumps over the lazy dog the".split() freq = Counter(words) print(freq.most_common(3)) # [('the', 3), ('quick', 1), ('brown', 1)] # defaultdict — no KeyError for missing keys graph: dict[str, list[str]] = defaultdict(list) for u, v in [("A","B"), ("A","C"), ("B","D")]: graph[u].append(v) # deque — O(1) queue for BFS queue = deque(["A"]) visited = set() while queue: node = queue.popleft() if node not in visited: visited.add(node) queue.extend(graph[node]) print(visited) # {'A', 'B', 'C', 'D'} # namedtuple Point = namedtuple("Point", ["x", "y"]) p = Point(3, 4) print(p.x, p.y, p._asdict()) ```

Quick Snippet

snippet.py
from collections import Counter, defaultdict, deque, namedtuple

# Counter
words = "the quick brown fox jumps over the lazy dog the".split()
freq = Counter(words)
print(freq.most_common(3))   # [('the', 3), ('quick', 1), ('brown', 1)]

# defaultdict — no KeyError for missing keys
graph: dict[str, list[str]] = defaultdict(list)
for u, v in [("A","B"), ("A","C"), ("B","D")]:
    graph[u].append(v)

# deque — O(1) queue for BFS
queue = deque(["A"])
visited = set()
while queue:
    node = queue.popleft()
    if node not in visited:
        visited.add(node)
        queue.extend(graph[node])
print(visited)  # {'A', 'B', 'C', 'D'}

# namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
print(p.x, p.y, p._asdict())

Full Example

collections_basics.py
# Compile: python3 collections_basics.py
# Output:
# [('the', 3), ('quick', 1), ('brown', 1)]
# {'A', 'B', 'C', 'D'}

from collections import Counter, defaultdict, deque, namedtuple, OrderedDict

words = "the quick brown fox jumps over the lazy dog the".split()
freq = Counter(words)
print(freq.most_common(3))

graph: dict = defaultdict(list)
for u, v in [("A","B"), ("A","C"), ("B","D")]:
    graph[u].append(v)

queue = deque(["A"])
visited = set()
while queue:
    node = queue.popleft()
    if node not in visited:
        visited.add(node)
        queue.extend(graph[node])
print(visited)

# namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
print(p.x, p.y, p._asdict())
print(p._replace(x=10))

# deque as fixed-size sliding window
window = deque(maxlen=3)
for n in range(6):
    window.append(n)
    print(f"window: {list(window)}")
Run command
python3 collections_basics.py