Exercices Fonctions & Modules Grouper avec itertools.groupby
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Grouper avec itertools.groupby

itertools.groupby() est l'équivalent du GROUP BY en SQL : il regroupe des éléments selon un critère. Piège majeur : groupby ne regroupe que les éléments consécutifs. Il faut donc trier d'abord par la même clé.

Exemple :
import itertools
animaux = sorted(["chat", "canard", "lapin", "lion"], key=lambda m: m[0])
for lettre, groupe in itertools.groupby(animaux, key=lambda m: m[0]):
print(lettre, list(groupe))
donne c ['canard', 'chat'] et l ['lapin', 'lion']

Écris une fonction grouper_par_premiere_lettre(mots) qui retourne un dictionnaire {lettre: [mots]} groupant les mots par leur première lettre (en majuscule). Trie la liste avant le groupement.

Exemple :
grouper_par_premiere_lettre(["banane", "abricot", "avocat", "cerise"])
renvoie {"A": ["abricot", "avocat"], "B": ["banane"], "C": ["cerise"]}

Tests (2/4)

Groupement basique
result = grouper_par_premiere_lettre(['banane', 'abricot', 'avocat', 'cerise', 'bleuet'])
assert sorted(result['A']) == ['abricot', 'avocat']
assert sorted(result['B']) == ['banane', 'bleuet']
assert result['C'] == ['cerise']
Un seul mot
result = grouper_par_premiere_lettre(['Python'])
assert result == {'P': ['Python']}

+ 0 tests cachés

Indices (3 disponibles)

solution.py