objectif
Regrouper trié et découper en chunks.
code minimal
import itertools
data = sorted([("a",1),("b",2),("a",3)])
groups = {k: [v for _,v in g] for k, g in itertools.groupby(data, key=lambda t: t[0])}
print(len(groups["a"]))
utilisation
import itertools
def chunks(it, n):
it = iter(it)
while True:
c = list(itertools.islice(it, n))
if not c: break
yield c
print(sum(len(c) for c in chunks(range(7), 3)))
variante(s) utile(s)
import itertools
print(list(itertools.accumulate([1,2,3]))[-1])
notes
- groupby suppose une séquence triée par la clé.