Introducción
En Python, puedes agrupar los elementos de una lista en función de una función dada. Esto puede ser útil cuando quieres contar el número de ocurrencias de cada grupo. En este desafío, te encomendaré la tarea de crear una función que agrupe los elementos de una lista en función de una función dada y devuelva la cuenta de elementos en cada grupo.
Contar Elementos Agrupados
Escribe una función count_by(lst, fn = lambda x: x) que tome una lista lst y una función fn como argumentos. La función debe agrupar los elementos de la lista en función de la función dada y devolver un diccionario con la cuenta de elementos en cada grupo.
Para resolver este problema, puedes seguir estos pasos:
- Inicializa un diccionario usando
collections.defaultdict. - Utiliza
map()para aplicar la función dada a cada elemento de la lista. - Itera sobre los valores mapeados e incrementa la cuenta de cada elemento en el diccionario.
La función debe devolver el diccionario resultante.
from collections import defaultdict
def count_by(lst, fn = lambda x: x):
count = defaultdict(int)
for val in map(fn, lst):
count[val] += 1
return dict(count)
from math import floor
count_by([6.1, 4.2, 6.3], floor) ## {6: 2, 4: 1}
count_by(['one', 'two', 'three'], len) ## {3: 2, 5: 1}
Resumen
En este desafío, aprendiste cómo agrupar los elementos de una lista en función de una función dada y devolver la cuenta de elementos en cada grupo. También aprendiste cómo utilizar collections.defaultdict y map() para resolver este problema.