una - frecuencia python
Python: usar un diccionario para contar los elementos en una lista (8)
Considere colecciones. Contador (disponible desde python 2.7 en adelante). https://docs.python.org/2/library/collections.html#collections.Counter
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo contar las ocurrencias de un elemento de la lista? 17 respuestas
Soy nuevo en Python y tengo una pregunta simple, digamos que tengo una lista de elementos:
[''apple'',''red'',''apple'',''red'',''red'',''pear'']
¿Cuál es la forma más sencilla de agregar los elementos de la lista a un diccionario y contar cuántas veces aparece el elemento en la lista?
Entonces, para la lista anterior, me gustaría que la salida sea:
{''apple'': 2, ''red'': 3, ''pear'': 1}
Me gusta:
counts = dict()
for i in items:
counts[i] = counts.get(i, 0) + 1
.get le permite especificar un valor predeterminado si la clave no existe.
Qué tal esto:
src = [ ''one'', ''two'', ''three'', ''two'', ''three'', ''three'' ]
result_dict = dict( [ (i, src.count(i)) for i in set(src) ] )
Esto resulta en
{''uno'': 1, ''tres'': 3, ''dos'': 2}
Siempre pensé que para una tarea tan trivial, no me gustaría importar nada. Pero puedo estar equivocado, dependiendo de las colecciones. El encuentro es más rápido o no.
items = "Whats the simpliest way to add the list items to a dictionary "
stats = {}
for i in items:
if i in stats:
stats[i] += 1
else:
stats[i] = 1
# bonus
for i in sorted(stats, key=stats.get):
print("%d×''%s''" % (stats[i], i))
Creo que esto puede ser preferible al uso de count (), ya que solo superará el iterable una vez, mientras que el conteo puede buscar todo en cada iteración. Usé este método para analizar muchos megabytes de datos estadísticos y siempre fue razonablemente rápido.
Simplemente use el recuento de propiedades de lista /
i = [''apple'',''red'',''apple'',''red'',''red'',''pear'']
d = {x:i.count(x) for x in i}
print d
salida: {''pera'': 1, ''manzana'': 2, ''rojo'': 3}
en 2.7 y 3.1 hay un Counter
especial para este propósito.
>>> from collections import Counter
>>> Counter([''apple'',''red'',''apple'',''red'',''red'',''pear''])
Counter({''red'': 3, ''apple'': 2, ''pear'': 1})
>>> L = [''apple'',''red'',''apple'',''red'',''red'',''pear'']
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i in L:
... d[i] += 1
>>> d
defaultdict(<type ''int''>, {''pear'': 1, ''apple'': 2, ''red'': 3})
L = [''apple'',''red'',''apple'',''red'',''red'',''pear'']
d = {}
[d.__setitem__(item,1+d.get(item,0)) for item in L]
print d
Da {''pear'': 1, ''apple'': 2, ''red'': 3}