typestar

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

  1. List.groupBy empareja cada clave con sus filas.
  2. Un map sobre los grupos suma la cosecha por colmena.
  3. countBy es el conteo de una llamada para datos categóricos.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Colecciones; paso 17 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →