Regrouper des éléments selon une fonction

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En Python, vous pouvez regrouper les éléments d'une liste sur la base d'une fonction donnée. Cela peut être utile lorsque vous voulez compter le nombre d'occurrences de chaque groupe. Dans ce défi, vous devrez créer une fonction qui regroupe les éléments d'une liste sur la base d'une fonction donnée et renvoie le compte d'éléments dans chaque groupe.

Compter les éléments regroupés

Écrivez une fonction count_by(lst, fn = lambda x: x) qui prend une liste lst et une fonction fn en arguments. La fonction devrait regrouper les éléments de la liste sur la base de la fonction donnée et renvoyer un dictionnaire avec le compte d'éléments dans chaque groupe.

Pour résoudre ce problème, vous pouvez suivre ces étapes :

  1. Initialisez un dictionnaire à l'aide de collections.defaultdict.
  2. Utilisez map() pour appliquer la fonction donnée à chaque élément de la liste.
  3. Itérez sur les valeurs mappées et augmentez le compte de chaque élément dans le dictionnaire.

La fonction devrait renvoyer le dictionnaire résultant.

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}

Sommaire

Dans ce défi, vous avez appris à regrouper les éléments d'une liste sur la base d'une fonction donnée et à renvoyer le compte d'éléments dans chaque groupe. Vous avez également appris à utiliser collections.defaultdict et map() pour résoudre ce problème.