python 33 lines · 8 steps

Counting things with collections.Counter

A tour of Counter's tallying, merging, comparison, and expansion tricks through small helper functions.

Explained by highlit
1from collections import Counter
2 
3 
4def word_frequencies(text):
5 words = text.lower().split()
6 return Counter(words)
7 
8 
9def char_histogram(text):
10 counts = Counter(c for c in text if c.isalpha())
11 return counts
12 
13 
14def merge_counts(a, b):
15 combined = Counter(a)
16 combined.update(b)
17 return combined
18 
19 
20def difference(a, b):
21 return Counter(a) - Counter(b)
22 
23 
24def top_n(items, n):
25 return Counter(items).most_common(n)
26 
27 
28def has_same_multiset(a, b):
29 return Counter(a) == Counter(b)
30 
31 
32def elements_with_repetition(counts):
33 return list(Counter(counts).elements())
01 / 01
STEP 01

Walkthrough

Space play step click any line
Three takeaways
  1. 1Counter turns any iterable into a tally dict where missing keys default to zero.
  2. 2Arithmetic and comparison operators let you treat Counters as multisets, not just dicts.
  3. 3Methods like most_common and elements expose ranking and re-expansion without manual loops.

Related explainers

Share this explainer

Here's the card — post it anywhere.

Counting things with collections.Counter — share card
Made with highlit — turn any snippet into a walkthrough like this in about a minute.
Explain your code