Python24 min read
Python Collections Module
Use Counter, defaultdict, namedtuple, and deque to solve real problems cleanly with Python’s collections module.
Michael Brown
July 28, 2025
11.3k265
Python’s collections module provides specialized data structures that make many tasks easier and cleaner.
You will use these in real projects when basic lists and dicts become inconvenient.
## Counter (count items easily)
```python
from collections import Counter
fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]
count = Counter(fruits)
print(count)
print(count["apple"])
print(count.most_common(2))
```
Expected output:
```
Counter({'apple': 3, 'banana': 2, 'orange': 1})
3
[('apple', 3), ('banana', 2)]
```
## defaultdict (avoid KeyError)
```python
from collections import defaultdict
scores = defaultdict(int)
scores["Tom"] += 10
scores["Sarah"] += 20
print(scores)
```
Expected output:
```
defaultdict(<class 'int'>, {'Tom': 10, 'Sarah': 20})
```
## namedtuple (lightweight structured data)
```python
from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(p.x)
print(p.y)
```
Expected output:
```
10
20
```
## deque (fast queue from both ends)
```python
from collections import deque
queue = deque(["Tom", "Sarah", "Mike"])
queue.append("Alice")
queue.appendleft("Bob")
queue.pop()
queue.popleft()
print(queue)
```
Expected output:
```
deque(['Tom', 'Sarah', 'Mike'])
```
## Graph: choose the right structure
```mermaid
flowchart LR
A[Need counts?] --> B[Counter]
C[Need default values?] --> D[defaultdict]
E[Need lightweight record?] --> F[namedtuple]
G[Need fast queue?] --> H[deque]
```
In the next lesson, you will learn virtual environments again but in a more project-focused way, so you can manage dependencies like a professional developer.
#Python#Intermediate#Collections