По сути, я пытаюсь взять данные и использовать Enum.group_by для создания словаря, но я хотел бы продолжить группировать те же данные по подкатегориям.
data = [
%{company: "company_one", state: "LA", size: 100},
%{company: "company_one", state: "LA", size: 200},
%{company: "company_two", state: "TX", size: 200},
%{company: "company_two", state: "LA", size: 300},
%{company: "company_three", state: "LA", size: 400},
%{company: "company_four", state: "TX", size: 500}
]
Я хочу сначала сгруппировать по компаниям, затем в этой карте сгруппируйте их теперь по штатам и еще раз в этой вложенной карте сгруппируйте их по размеру. По сути, это карта с двумя вложенными картами и массивом соответствующих данных.
%{"company_one" => %{
"LA" => %{
"100" => [
%{company: company_one, state: LA, size: 100}
],
"200" => [
%{company: company_one, state: LA, size: 200}
]
}
}
}
Моя попытка выглядит примерно так
list =
data
|> Enum.group_by(fn x -> x.company end)
keys = Map.keys(data)
updated_list =
for key <- keys do
list[key]
|> Enum.group_by(fn x -> x.state end)
end
Я использовал Enum.group_by / 1 для исходный формат, но все, что я пробовал после этого, действительно испортило структуру данных. Любая помощь была бы замечательной. Спасибо.