← retour aux snippets

python: itertools groupby & chunks

Regrouper trié et découper en chunks.

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é.