Group consecutive items

EasyIterator & Generator Programs · 20 of 20

Write a Python program that groups log lines by level with itertools.groupby.

Advertisement
Output
ERROR ['db', 'disk']
INFO ['ok', 'start']

Approach

  1. groupby groups consecutive equal keys, so sort first.

Solution

Python
from itertools import groupby logs = [("ERROR", "db"), ("INFO", "start"), ("ERROR", "disk"), ("INFO", "ok")]for level, group in groupby(sorted(logs), key=lambda x: x[0]):    print(level, [msg for _, msg in group])
Output
ERROR ['db', 'disk']
INFO ['ok', 'start']

Learn the concept

New to this topic? Read the lesson, then come back.

More iterator & generator programs

← All 20 Iterator & Generator Programs

Leave a Comment