in

Contadores en Python?

60 142162 1519038074

Un contador es un contenedor que realiza un seguimiento de cuántas veces se agregan valores equivalentes. La clase de contador de Python es parte del módulo de colecciones y es una subclase del diccionario.

Contador de Python

Podemos pensar en el contador como una colección desordenada de elementos donde los elementos se almacenan como claves de diccionario y su recuento como valor de diccionario.

El recuento de elementos del contador puede ser entero positivo, cero o negativo. Aunque no hay restricciones en sus claves y valores, generalmente los valores están destinados a ser números, pero también podemos almacenar otros tipos de objetos.

Inicializando

Counter admite tres formas de inicialización. Su constructor se puede llamar con una secuencia de elementos, un diccionario que contiene claves y recuentos, o usando argumentos de palabras clave que mapean nombres de cadenas a recuentos.

import collections
print (collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']))
print (collections.Counter({'a': 2, 'b': 3, 'c':1}))
print(collections.Counter(a=2, b=3, c=1))

La salida de las tres formas de inicialización es la misma:

Counter({'b': 3, 'a': 2, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 1})

Para crear un contador vacío, pase el contador sin argumento y complételo mediante el método de actualización.

import collections
c = collections.Counter()
print('Initial: ', c)
c.update('abcddcba')
print('Sequence: ', c)
c.update({'a': 1, 'd':5})
print('Dict: ', c)

Producción

Initial: Counter()
Sequence: Counter({'a': 2, 'b': 2, 'c': 2, 'd': 2})
Dict: Counter({'d': 7, 'a': 3, 'b': 2, 'c': 2})

Acceder a recuentos

Una vez que se completa el contador, los valores se pueden recuperar a través de la API del diccionario.

import collections
c = collections.Counter('abcddcba')
for letter in 'abcdef':
   print('%s : %d' %(letter, c[letter]))

Producción

a : 2
b : 2
c : 2
d : 2
e : 0
f : 0

Counter no genera KeyError para elementos desconocidos (como los elementos e & f que hemos mencionado en el programa anterior). Si no se ha visto un valor en la entrada, su recuento es 0 (como para el elemento desconocido e & f en la salida anterior).

El método elements () devuelve un iterador que produce todos los elementos conocidos por el contador.

import collections
c = collections.Counter('Python Counters')
c['z'] = 0
print(c)
print(list(c.elements()))

Producción

Counter({'t': 2, 'o': 2, 'n': 2, 'P': 1, 'y': 1, 'h': 1, ' ': 1, 'C': 1, 'u': 1, 'e': 1, 'r': 1, 's': 1, 'z': 0})
['P', 'y', 't', 't', 'h', 'o', 'o', 'n', 'n', ' ', 'C', 'u', 'e', 'r', 's']

El orden de los elementos no es fijo y los elementos con recuentos inferiores a cero no se incluyen.

Para producir entradas comunes de n entradas y sus respectivos conteos, usamos la función most_common ().

import collections
c = collections.Counter()
texts = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.'''
for word in texts:
c.update(word.rstrip().lower())
print("Five most common letters in the texts: ")
for letter, count in c.most_common(5):
print("%s: %7d" %(letter, count))

Producción

Five most common letters in the texts:
i: 42
e: 38
t: 32
o: 29
u: 29

El ejemplo anterior cuenta las letras que aparecen en los textos (o puede considerar un archivo) para producir una distribución de frecuencia, luego imprime las cinco más comunes. Al omitir el argumento de most_common () se produce una lista de todos los elementos, en orden de frecuencia.

Aritmética

Las instancias de contador admiten operaciones aritméticas y de conjuntos para agregar resultados.

import collections
c1 = collections.Counter(['a', 'b', 'c', 'a' ,'b', 'b'])
c2 = collections.Counter('alphabet')
print('C1: ', c1)
print('C2: ', c2)
print ('nCombined counts: ')
print(c1 + c2)
print('nSubtraction: ')
print(c1 - c2)
print('nIntersection (taking positive minimums): ')
print(c1 & c2)
print('nUnion (taking maximums): ')
print(c1 | c2)

Producción

C1: Counter({'b': 3, 'a': 2, 'c': 1})
C2: Counter({'a': 2, 'l': 1, 'p': 1, 'h': 1, 'b': 1, 'e': 1, 't': 1})
Combined counts:
Counter({'a': 4, 'b': 4, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})
Subtraction:
Counter({'b': 2, 'c': 1})
Intersection (taking positive minimums):
Counter({'a': 2, 'b': 1})
Union (taking maximums):
Counter({'b': 3, 'a': 2, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})

Cada vez que se produce un nuevo contador mediante una operación, se descartan los elementos con recuentos cero o negativos.

raja

Publicado el 30-abr-2019 12:35:19

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Pagar Minecraft Windows 10

Desinstale Minecraft y todas las demás aplicaciones de adware de Windows 10

apple touch icon@2

reactjs – forEach () en React JSX no genera ningún HTML