groupBy y countBy en F#
Cubetea una lista por clave calculada y pliega cada cubeta.
// groupBy buckets a list by a computed key in one pass.
let harvests =
[ "Willow", "spring", 6.2; "Willow", "summer", 8.0
"Bramble", "spring", 4.1; "Clover", "summer", 9.3 ]
harvests
|> List.groupBy (fun (hive, _, _) -> hive)
|> List.map (fun (hive, rows) ->
hive, rows |> List.sumBy (fun (_, _, kg) -> kg))
|> List.sortByDescending snd
|> List.iter (fun (hive, kg) -> printfn "%-8s %.1f kg" hive kg)
let bySeason = harvests |> List.countBy (fun (_, season, _) -> season)
printfn "Harvests per season: %A" bySeason
Cómo funciona
List.groupByempareja cada clave con sus filas.- Un
mapsobre los grupos suma la cosecha por colmena. countByes el conteo de una llamada para datos categóricos.
Palabras clave y builtins usados aquí
funlet
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 517
- Tokens
- 156
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 156 segundos.
Paso 2 de 3 en Colecciones; paso 17 de 27 en Fundamentos del lenguaje.