typestar

itertools.groupby en Python

Colapsar elementos iguales consecutivos en grupos.

import itertools

texto = "aaabbbccd"
corridas = [(ch, len(list(grupo)))
        for ch, grupo in itertools.groupby(texto)]

personas = [("nz", "kiri"), ("nz", "tane"), ("au", "riley")]
por_pais = {}
for pais, grupo in itertools.groupby(personas, key=lambda p: p[0]):
    por_pais[pais] = [nombre for _, nombre in grupo]

Cómo funciona

  1. groupby(texto) produce cada corrida y sus miembros.
  2. Contar el grupo da la codificación run-length.
  3. Una función key agrupa registros por un campo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
10
Caracteres a escribir
308
Tokens
106
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 61 segundos.

Escribe este fragmento

Paso 4 de 5 en Generadores e itertools; paso 13 de 53 en Python pythónico.

← Anterior Siguiente →