← retour aux snippets

heapq: top-k éléments rapidement

Obtenir les k plus grands/petits sans trier toute la liste.

python algorithms #heapq#topk#performance

objectif

Obtenir les k plus grands/petits sans trier toute la liste.

code minimal

import heapq
data = [5, 1, 9, 2, 7, 3]
print(heapq.nlargest(2, data) == [9, 7])  # attendu: True

utilisation

import heapq
data = [5,1,9,2,7,3]
print(heapq.nsmallest(3, data) == [1,2,3])

variante(s) utile(s)

import heapq
data = [(3, "c"), (1, "a"), (2, "b")]
print(heapq.nlargest(1, data)[0][1] == "c")

notes

  • Plus efficace que sorted(…)[:k] pour de grands ensembles.
  • Accepte une clé via key=.