Conteúdo original em https://twitter.com/zanfranceschi/status/1679497149732585472
Ei dev,
Pega esse desafio de agregação de registros!
Dado registros granulares que contêm data e quantidade, crie uma função que os agregue por data em um dicionário e some os atributos "qtd". O código a seguir explica melhor o desafio.
# dado os seguintes registros
registros = [{"data" : "2023-07-13", "qtd" : 12},
{"data" : "2023-07-14", "qtd" : 30},
{"data" : "2023-07-13", "qtd" : 4},
{"data" : "2023-07-14", "qtd" : 98},
{"data" : "2023-07-12", "qtd" : 4},
{"data" : "2023-07-12", "qtd" : 8},
{"data" : "2023-07-12", "qtd" : 31},
{"data" : "2023-07-15", "qtd" : 74},
{"data" : "2023-07-13", "qtd" : 12},
{"data" : "2023-07-12", "qtd" : 1},
{"data" : "2023-07-17", "qtd" : 3},
{"data" : "2023-07-16", "qtd" : 35}]
# desenvolva uma função de agrupamento
resultado = agrupar(registros)
# que retorne o seguinte resultado
{"2023-07-13" : 28,
"2023-07-14" : 128,
"2023-07-12" : 44,
"2023-07-15" : 74,
"2023-07-17" : 3,
"2023-07-16" : 35}`
Se alguém tiver curiosidade sobre como isso poderia ser feito em Clojure, aí está.
(defn agrupar
[registros]
(into {} (map (fn [i]
[(first i)
(->> (map :qtd (second i))
(reduce +))])
(group-by :data registros))))
(agrupar [{:data "2023-07-13", :qtd 12}
{:data "2023-07-14", :qtd 30}
{:data "2023-07-13", :qtd 4}
{:data "2023-07-14", :qtd 98}
{:data "2023-07-12", :qtd 4}
{:data "2023-07-12", :qtd 8}
{:data "2023-07-12", :qtd 31}
{:data "2023-07-15", :qtd 74}
{:data "2023-07-13", :qtd 12}
{:data "2023-07-12", :qtd 1}
{:data "2023-07-17", :qtd 3}
{:data "2023-07-16", :qtd 35}])
Top comments (0)