Le module de bibliothèque standard Python itertools fournit des fonctions pratiques pour gérer les itérateurs. Parmi eux, groupby est souvent utilisé, mais je vais le présenter car beaucoup de gens ne le savent pas. ..
groupby
Une fonction qui regroupe les itérables (listes, itérateurs, etc.) avec des clés arbitraires. La valeur de retour est un itérateur de la clé et des éléments qui appartiennent à la clé.
L'itérable passé à groupby doit être trié à l'avance car les éléments avec la même clé doivent être consécutifs.
Il est difficile d'obtenir une image simplement en expliquant, alors jetons un coup d'œil à un exemple simple.
Voici un exemple de regroupement d'une liste dont les éléments sont un tuple de lettres et de chiffres.
from itertools import groupby
from operator import itemgetter
a = [("b", 3), ("a", 1), ("c", 2), ("a", 2), ("b", 1)]
a = sorted(a, key=itemgetter(0))
for (k, g) in groupby(a, key=itemgetter(0)):
print("key:" + k)
for item in g:
print(item)
Résultat d'exécution
key:a
('a', 1)
('a', 2)
key:b
('b', 3)
('b', 1)
key:c
('c', 2)
Si vous utilisez groupby sans trier, vous obtiendrez ce qui suit.
:Si vous l'exécutez sans trier...
key:b
('b', 3)
key:a
('a', 1)
key:c
('c', 2)
key:a
('a', 2)
key:b
('b', 1)
Recommended Posts