Agrupar elementos por función

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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:

  1. Inicializa un diccionario usando collections.defaultdict.
  2. Utiliza map() para aplicar la función dada a cada elemento de la lista.
  3. 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.