Exercices Structures de données Top N des éléments
🎉

Bravo!

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

Top N des éléments

Un problème classique en programmation : trouver les N éléments les plus fréquents dans une collection. C'est utilisé partout : les mots les plus cherchés, les produits les plus vendus, les erreurs les plus fréquentes dans des logs.

Pour résoudre ce problème, tu combines plusieurs outils :
1. Un dictionnaire pour compter les occurrences
2. La fonction sorted() avec le paramètre key pour trier par valeur
3. Le slicing [:n] pour garder les N premiers

La fonction sorted() peut trier les paires clé-valeur d'un dictionnaire :
compteur = {'a': 3, 'b': 1, 'c': 5}
sorted(compteur.items(), key=lambda x: x[1], reverse=True)
donne [('c', 5), ('a', 3), ('b', 1)]

Le paramètre key=lambda x: x[1] dit à sorted de trier selon la valeur (index 1 du tuple). reverse=True trie du plus grand au plus petit.

Écris une fonction top_n(éléments, n) qui prend une liste d'éléments et un nombre n, et renvoie la liste des n éléments les plus fréquents, triés du plus fréquent au moins fréquent. Chaque élément du résultat est un tuple (élément, nombre_occurrences).

Exemple :
top_n(['a', 'b', 'a', 'c', 'a', 'b'], 2) renvoie [('a', 3), ('b', 2)]

Tests (4/4)

Top 2
assert top_n(['a', 'b', 'a', 'c', 'a', 'b'], 2) == [('a', 3), ('b', 2)]
Top 1
assert top_n([1, 1, 2, 2, 2], 1) == [(2, 3)]
Liste vide
assert top_n([], 3) == []
N plus grand que les éléments uniques
r = top_n(['x', 'y'], 5)
assert len(r) == 2

Indices (3 disponibles)

solution.py