Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo usar el contador de Python del módulo de colecciones

Cómo usar Pythons-Counter-from-Collections-Module
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

En este tutorial, aprenderá a usar el objeto de contador del módulo de colección de Python.

Cuando trabaja con secuencias largas en Python, por ejemplo, listas o cadenas de Python, a veces puede necesitar almacenar el artículos que aparecen en la secuencia y el numero de veces ellos aparecen.

Un diccionario de Python es una estructura de datos incorporada adecuada para tales aplicaciones. Sin embargo, la clase Counter de Python del módulo de colecciones puede simplificar esto mediante la construcción de un contador, que es un diccionario de elementos y su recuento en la secuencia.

En los próximos minutos, aprenderá lo siguiente:

  • Usar el objeto de contador de Python 
  • Cree un diccionario de Python para almacenar valores de conteo de elementos en un iterable 
  • Reescribe el diccionario usando el contador de Python con una sintaxis simplificada
  • Realice operaciones como actualizar y restar elementos, encontrar la intersección entre dos objetos contadores 
  • Obtenga los artículos más frecuentes en el mostrador usando el most_common() Método

¡Vamos a empezar!

Python Collections Module and Counter Class

A menudo usará un Diccionario de Python es almacenar los elementos y su recuento en un iterable. Los elementos y el recuento se almacenan como claves y valores, respectivamente.

A este tenor, Counter class es parte del módulo de colecciones incorporado de Python, puede importarlo en su secuencia de comandos de Python de la siguiente manera:

from collections import Counter

Después de importar la clase Counter como se mencionó, puede crear una instancia de un objeto contador como se muestra:

<counter_object> = Counter(iterable)

Aquí:

  • iterable es cualquier iterable de Python válido, como una lista, una cadena o una tupla de Python.
  • Los elementos en el iterable deben ser mezclable.

Ahora que sabemos cómo usar Counter para crear objetos de contador a partir de cualquier iterable de Python, comencemos a codificar.

Los ejemplos utilizados en este tutorial se pueden encontrar en esta esencia de GitHub.

How to Create a Counter Object from Python Iterables

Create-a-Counter-Object-from-Python-Iterables

Creemos una cadena de Python, digamos, 'renacimiento' y llámela word.

>>> word = "renaissance"

Nuestro objetivo es crear un diccionario donde cada letra del word cadena se asigna al número de veces que aparece en la cadena. Un enfoque es usar bucles for como se muestra:

>>> letter_count = {}
>>> for letter in word:
...     if letter not in letter_count:
...         letter_count[letter] = 0
...     letter_count[letter] += 1
...
>>> letter_count
{'r': 1, 'e': 2, 'n': 2, 'a': 2, 'i': 1, 's': 2, 'c': 1}

Analicemos lo que hace el fragmento de código anterior:

  • Inicializa letter_count a un diccionario Python vacío.
  • Bucles a través de la word cadena.
  • Comprueba si letter está presente en el letter_count diccionario.
  • If letter no está presente, lo suma con un valor de 0 y posteriormente incrementa el valor en 1.
  • Para cada ocurrencia de letter in word, el valor correspondiente aletter se incrementa en 1.
  • Esto continúa hasta que recorremos toda la cadena.

Construimos el letter_count diccionario—por nuestra cuenta—usando en bucle para recorrer la cuerda word.

Ahora usemos la clase Counter del módulo de colecciones. Sólo tenemos que pasar en el word cadena a Counter() para obtener letter_count sin tener que recorrer los iterables.

>>> from collections import Counter
>>> letter_count = Counter(word)
>>> letter_count
Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1})

El contraobjeto también es un Diccionario de Python. Podemos usar el incorporado isinstance() función para verificar esto:

>>> isinstance(letter_count,dict)
True

Como se vio, isinstance(letter_count, dict) devoluciones True indicando que el contraobjeto letter_count es una instancia de Python dict clase.

Modifying the Counter Object

Hasta ahora, hemos aprendido a crear objetos de contador a partir de cadenas de Python.

También puede modificar objetos de contador actualizándolos con elementos de otro iterable o restando otro iterable de ellos.

Actualización de un contador con elementos de otro iterable

Vamos a inicializar otra cadena another_word:

>>> another_word = "effervescence"

Supongamos que nos gustaría actualizar el letter_count contraobjeto con los elementos de another_word cadena.

Podemos usar el update() método en el objeto contador letter_count.

>>> letter_count.update(another_word)
>>> letter_count
Counter({'e': 7, 'n': 3, 's': 3, 'c': 3, 'r': 2, 'a': 2, 'f': 2, 'i': 1, 'v': 1})

En el resultado, vemos que el objeto contador se ha actualizado para incluir también las letras y su número de ocurrencias desde another_word.

Restar elementos de otro iterable

Ahora vamos a restar el valor de another_word desde letter_count objeto. Para ello, podemos utilizar el subtract() método. Utilizando <counter-object>.subtract(<some-iterable>) resta los valores correspondientes a los elementos en <some-iterable> del desplegable <counter-object>.

vamos a restar another_word desde letter_count.

>>> letter_count.subtract(another_word)
>>> letter_count
Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1, 'f': 0, 'v': 0})

Vemos que los valores correspondientes a las letras en another_word se han sustraído, pero las teclas agregadas 'f' y 'v' no se eliminan. Ahora se asignan a un valor de 0.

Nota:: Aquí, hemos pasado en another_word, una cadena de Python, a la subtract() llamada de método. También podemos pasar un objeto contador de Python u otro iterable.

Intersection Between Two Counter Objects in Python

Intersección-entre-dos-contra-objetos-en-Python

Es posible que a veces desee encontrar el intersección entre dos objetos de contador de Python para identificar qué claves son comunes entre los dos.

Vamos a crear un contraobjeto, digamos, letter_count_2, A partir de la another_word cadena 'efervescencia'.

>>> another_word = "effervescence"
>>> letter_count_2 = Counter(another_word)
>>> letter_count_2
Counter({'e': 5, 'f': 2, 'c': 2, 'r': 1, 'v': 1, 's': 1, 'n': 1})

Podemos usar el operador simple & para encontrar la intersección entre letter_count y letter_count_2.

>>> letter_count & letter_count_2
Counter({'e': 2, 'r': 1, 'n': 1, 's': 1, 'c': 1})

Observe cómo obtiene las claves y el número de ocurrencias común a las dos palabras. Tanto 'renacimiento' como 'efervescencia' contienen dos ocurrencias de 'e' y una ocurrencia de 'r', 'n', 's' y 'c' en común.

Find the Most Frequent Items Using most_common

Otra operación común en el objeto de contador de Python es encontrar los elementos que ocurren con mayor frecuencia.

Para obtener los k artículos más comunes en el mostrador, puede usar el most_common() método en el objeto contador. Aquí, llamamos most_common() on letter_count para encontrar las tres letras más frecuentes.

>>> letter_count.most_common(3)
[('e', 2), ('n', 2), ('a', 2)]

Vemos que las letras 'e', ​​'n' y 'a' aparecen dos veces en la palabra 'renacimiento'.

Esto es especialmente útil si el contador contiene una gran cantidad de entradas y está interesado en trabajar con el más común llaves.

Conclusión

Aquí hay una revisión rápida de lo que hemos aprendido en el tutorial:

  • La Counter La clase del módulo de colecciones incorporado de Python se puede usar para obtener un diccionario de valores de conteo de todos los elementos en cualquier iterable. Debe asegurarse de que todos los elementos en el iterable sean hashable.
  • Puede actualizar el contenido de un objeto de contador de Python con contenido de otro objeto de contador o cualquier otro iterable usando el update() método con la sintaxis: counter1.update(counter2). Tenga en cuenta que puede usar cualquier iterable en lugar de counter2.
  • Si desea eliminar el contenido de uno de los iterables del contador actualizado, puede usar el subtract() método: counter1.subtract(counter2)
  • Para encontrar los elementos comunes entre dos objetos contadores, puede utilizar el & operador. Dados dos contadores counter1 y counter2, counter1 & counter2 devuelve la intersección de estos dos objetos contadores.
  • Para obtener los elementos k más frecuentes en un contador, puede utilizar el most_common() método. counter.most_common(k) da los elementos k más comunes y los respectivos recuentos.

A continuación, aprende cómo usar el dictado predeterminado, otra clase en el módulo de colecciones. Puede usar el dictado predeterminado en lugar de un diccionario de Python normal para manejar las claves que faltan.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder