use-counter-frequency

star 3

For counting and frequency: histograms, most common elements, vote tallying, neighbor counting, word frequencies, distribution analysis.

jimmc414 By jimmc414 schedule Updated 12/27/2025

name: use-counter-frequency description: "For counting and frequency: histograms, most common elements, vote tallying, neighbor counting, word frequencies, distribution analysis."

use-counter-frequency

When to Use

  • Counting occurrences of items
  • Finding most common elements
  • Building histograms
  • Vote/tally counting
  • Word frequency analysis
  • Neighbor counting in grids
  • Any "how many of each" question

When NOT to Use

  • When you need the items themselves, not counts
  • Single occurrence checking (use set)
  • When counts need to be updated in complex ways

The Pattern

Use collections.Counter - a dict subclass optimized for counting.

from collections import Counter

# Count anything iterable
Counter('abracadabra')  # {'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1}
Counter([1, 1, 2, 3, 3, 3])  # {3: 3, 1: 2, 2: 1}

# Most common
counter.most_common(3)  # Top 3 as [(item, count), ...]

# Arithmetic
Counter('abc') + Counter('bcd')  # {'b': 2, 'c': 2, 'a': 1, 'd': 1}

# Total count
sum(counter.values())

Example (from pytudes)

from collections import Counter

# Word frequency from text (spell.py)
def words(text):
    return re.findall(r'\w+', text.lower())

WORDS = Counter(words(open('big.txt').read()))
# WORDS['the'] = 79809

def P(word, N=sum(WORDS.values())):
    """Probability of word."""
    return WORDS[word] / N

# Neighbor counting (Life.ipynb)
def neighbor_counts(world):
    """For each cell, count how many live neighbors it has."""
    return Counter(neighbor
                   for cell in world
                   for neighbor in neighbors(cell))

# Use for Game of Life rules
counts = neighbor_counts(world)
new_world = {cell for cell, count in counts.items()
             if count == 3 or (count == 2 and cell in world)}

# Probability distribution (Probability.ipynb)
class Dist(Counter):
    """A distribution of {outcome: frequency}."""
    pass

DK = Dist(GG=121801, GB=126840, BG=127123, BB=135138)
# Access: DK['GG'], DK.most_common(), sum(DK.values())

Key Principles

  1. Counter is a dict: All dict methods work
  2. Missing keys = 0: No KeyError for missing items
  3. most_common(n): Get top n items efficiently
  4. Arithmetic works: Add, subtract, intersect counters
  5. Generator input: Counter(x for x in iterable if condition)
Install via CLI
npx skills add https://github.com/jimmc414/claude-code-plugin-marketplace --skill use-counter-frequency
Repository Details
star Stars 3
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator