Skip to content

Instantly share code, notes, and snippets.

@ijunaid8989
Created June 23, 2016 08:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ijunaid8989/fb1e49975fcf5440795acf0e81310854 to your computer and use it in GitHub Desktop.
Save ijunaid8989/fb1e49975fcf5440795acf0e81310854 to your computer and use it in GitHub Desktop.
stock_list = [["Mint", "unavailable", "UK 4"], ["Nude", "unavailable", "UK 4"],
["Mint", "unavailable", "UK 6"], ["Nude", "unavailable", "UK 6"],
["Mint", "unavailable", "UK 8"], ["Nude", "low_stock", "UK 8"],
["Mint", "unavailable", "UK 10"], ["Nude", "unavailable", "UK 10"],
["Mint", "unavailable", "UK 12"], ["Nude", "low_stock", "UK 12"],
["Mint", "unavailable", "UK 14"], ["Nude", "low_stock", "UK 14"],
["Mint", "unavailable", "UK 16"], ["Nude", "low_stock", "UK 16"],
["Mint", "unavailable", "UK 18"], ["Nude", "available", "UK 18"]]
into
%{ "Mint" => %{"unavailable" => ["UK 18", "UK 16", "UK 14", "UK 12", "UK 10",
"UK 8", "UK 6", "UK 4"]},
"Nude" => %{"available" => ["UK 18"],
"low_stock" => ["UK 16", "UK 14", "UK 12", "UK 8"],
"unavailable" => ["UK 10", "UK 6", "UK 4"]}
}
what you need
stock_list
|> Enum.reduce(%{}, fn [name, stock, type], acc ->
Map.update(acc, name, %{stock => [type]}, fn stock_map -> Map.update(stock_map, stock, [type], &[type | &1]) end)
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment