Nearby lessons

135 of 159

Python - collections Module

📌 What You Will Learn
  • Import useful types from collections
  • Count values with Counter
  • Group or initialize values with defaultdict
  • Use deque for efficient double-ended queues
  • Create lightweight record types with namedtuple

Why collections exists

Lists and dictionaries are flexible general-purpose tools. The collections module adds containers for frequent counting, grouping, queue, and record patterns.

Counter

🐍Code Cell
1from collections import Counter
2 
3counts = Counter('banana')
4print(counts['a'])
5print(counts.most_common(1))
Output
3
[('a', 3)]

defaultdict

🐍Code Cell
1from collections import defaultdict
2 
3groups = defaultdict(list)
4groups['fruit'].append('apple')
5print(groups['fruit'])
6print(groups['vegetable'])
Output
['apple']
[]

deque

🐍Code Cell
1from collections import deque
2 
3queue = deque(['B', 'C'])
4queue.appendleft('A')
5queue.append('D')
6print(queue.popleft())
7print(queue)
Output
A
deque(['B', 'C', 'D'])

namedtuple

🐍Code Cell
1from collections import namedtuple
2 
3Point = namedtuple('Point', ['x', 'y'])
4p = Point(3, 4)
5print(p.x, p.y)
Output
3 4

OrderedDict and modern dictionaries

OrderedDict remains available for specialized ordering operations. Since Python 3.7, normal dictionaries preserve insertion order as a language guarantee, so use OrderedDict only when its extra methods or compatibility are useful.

Choosing a container

  • Use Counter for frequencies.
  • Use defaultdict for automatic grouped values.
  • Use deque for queues and both-end operations.
  • Use namedtuple for small immutable, named records.

Import styles

You can import the module as import collections or import a selected type such as from collections import Counter. Explicit imports make examples concise.

📝 Key Takeaways
  • collections provides specialized containers built on common patterns
  • Counter counts hashable values
  • defaultdict supplies a value for missing keys
  • deque supports efficient append and removal at both ends
  • Use the simplest built-in container that communicates intent

🧠 Test Your Knowledge

8 Questions
Progress: 0 / 8