Counter de collections en Python: conteo eficiente, actualización y operaciones aritméticas
Counter de collections en Python: conteo eficiente, actualización y operaciones aritméticas
¿Qué es Counter en Python?
Counter de Python es un contenedor especializado que cuenta las ocurrencias de cada elemento en un iterable. Hereda de dict y almacena elementos como claves con sus conteos como valores, lo que lo convierte en una herramienta ideal para conteo estilo tabla hash.
Por qué usar Counter en Python
- Almacena datos en una estructura desordenada tipo tabla hash, con elementos como claves y sus conteos como valores.
- Contar elementos en cualquier iterable —cadenas, listas, tuplas o diccionarios— es directo.
- Operaciones aritméticas integradas (adición, sustracción, intersección, unión) permiten manipulaciones potentes tipo conjunto.
- Puede agregar conteos de otras instancias
Countersin problemas.
Primeros pasos con Counter
Importa la clase desde collections:
from collections import Counter
Ahora puedes pasar cualquier iterable a Counter y recibir un mapeo de conteos.
Ejemplo – Contar una lista
lista1 = ['x','y','z','x','x','x','y','z'] print(Counter(lista1))
Salida:
Counter({'x': 4, 'y': 2, 'z': 2})
Ejemplo – Contar una cadena
mi_str = "¡Bienvenido a Tutoriales Guru99!" print(Counter(mi_str))
Salida:
Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1, 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})
Ejemplo – Contar un diccionario
dict1 = {'x': 4, 'y': 2, 'z': 2}
print(Counter(dict1))
Salida:
Counter({'x': 4, 'y': 2, 'z': 2})
Ejemplo – Contar una tupla
tupla1 = ('x','y','z','x','x','x','y','z')
print(Counter(tupla1))
Salida:
Counter({'x': 4, 'y': 2, 'z': 2})
Inicialización, actualización y acceso a contadores
Inicialización
print(Counter("¡Bienvenido a Tutoriales Guru99!")) # cadena
print(Counter(['x','y','z','x','x','x','y','z'])) # lista
print(Counter({'x': 4, 'y': 2, 'z': 2})) # diccionario
print(Counter(('x','y','z','x','x','x','y','z'))) # tupla
# Contador vacío
_contador = Counter()
Actualización
_contador.update('¡Bienvenido a Tutoriales Guru99!')
print(_contador)
Salida:
Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1, 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})
Acceso a conteos
print('%s : %d' % ('u', _contador['u']))
for char in 'Guru':
print('%s : %d' % (char, _contador[char]))
Salida:
u : 3 G : 1 u : 3 r : 2 u : 3
Eliminación de un elemento
del _contador['x'] print(_contador)
Salida:
Counter({'y': 2, 'z': 2})
Operaciones aritméticas
Counter soporta aritmética tipo conjunto. Los conteos positivos se preservan; los valores negativos se descartan en el resultado.
contador1 = Counter({'x': 4, 'y': 2, 'z': -2})
contador2 = Counter({'x1': -12, 'y': 5, 'z': 4})
# Adición
print(contador1 + contador2)
# Sustracción
print(contador1 - contador2)
# Intersección
print(contador1 & contador2)
# Unión
print(contador1 | contador2)
Salida:
Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})
Métodos clave
- elements() – Devuelve un iterador sobre elementos con conteos positivos.
- most_common([n]) – Devuelve los n elementos más comunes como lista de tuplas (elem, conteo).
- subtract(other) – Resta conteos de otro Counter.
- update(other) – Añade conteos de otro Counter.
Usando elements()
contador = Counter({'x': 5, 'y': 2, 'z': -2, 'x1': 0})
for e in contador.elements():
print(e)
Salida:
x x x x x y y
Usando most_common()
contador = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(contador.most_common(2))
print(contador.most_common())
Salida:
[('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]
Usando subtract()
c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.subtract(c2)
print(c1)
Salida:
Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})
Usando update()
c1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
c2 = Counter({'x': 2, 'y': 5})
c1.update(c2)
print(c1)
Salida:
Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})
Reasignación de conteos
contador = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
contador['y'] = 20
print(contador)
Salida:
Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})
Obtención y establecimiento de conteos de elementos
contador = Counter({'x': 5, 'y': 12, 'z': -2, 'x1': 0})
print(contador['y'])
contador['y'] = 20
contador['y1'] = 10
print(contador)
Salida:
12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})
Resumen
- Counter es una subclase de diccionario que cuenta elementos en cualquier iterable.
- Soporta conteo eficiente, operaciones aritméticas y una suite de métodos de utilidad.
- Casos de uso comunes incluyen análisis de frecuencia, generación de histogramas y agregación de datos.
- Para documentación completa, consulta los docs oficiales de Python Counter.
python
- Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Python len(): Guía Práctica para Medir Longitud de Objetos
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
- Función round() en Python explicada con ejemplos prácticos
- Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
- Python timeit(): medición de tiempo de ejecución con ejemplos prácticos
- Python list.count(): Guía Experta con Ejemplos Prácticos
- Python list.index(): Cómo Encontrar Posiciones de Elementos con Ejemplos Prácticos