Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

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

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

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

python

  1. Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
  2. Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
  3. Domine el Formateo de Strings en Python con format(): Ejemplos Claros
  4. Python len(): Guía Práctica para Medir Longitud de Objetos
  5. Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
  6. Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
  7. Función round() en Python explicada con ejemplos prácticos
  8. Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
  9. Python timeit(): medición de tiempo de ejecución con ejemplos prácticos
  10. Python list.count(): Guía Experta con Ejemplos Prácticos
  11. Python list.index(): Cómo Encontrar Posiciones de Elementos con Ejemplos Prácticos