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