【发布时间】:2017-04-10 16:25:29
【问题描述】:
假设这个数据集,
%{"ACTION" => "avail.datacenters",
"DATA" => [%{"ABBR" => "dallas", "DATACENTERID" => 2,
"LOCATION" => "Dallas, TX, USA"},
%{"ABBR" => "fremont", "DATACENTERID" => 3,
"LOCATION" => "Fremont, CA, USA"},
%{"ABBR" => "atlanta", "DATACENTERID" => 4,
"LOCATION" => "Atlanta, GA, USA"},
%{"ABBR" => "newark", "DATACENTERID" => 6, "LOCATION" => "Newark, NJ, USA"},
%{"ABBR" => "london", "DATACENTERID" => 7,
"LOCATION" => "London, England, UK"},
%{"ABBR" => "tokyo", "DATACENTERID" => 8, "LOCATION" => "Tokyo, JP"},
%{"ABBR" => "singapore", "DATACENTERID" => 9,
"LOCATION" => "Singapore, SG"},
%{"ABBR" => "frankfurt", "DATACENTERID" => 10,
"LOCATION" => "Frankfurt, DE"},
%{"ABBR" => "shinagawa1", "DATACENTERID" => 11,
"LOCATION" => "Tokyo 2, JP"}], "ERRORARRAY" => []}}
在 Ruby 中,我可以做到
formatted_array_of_hashes = data_set.each.map{ |h| { h["LOCATION"] => h["DATACENTERID"] }}
然后
merged_hash = Hash[*formatted_array_of_hashes.map(&:to_a).flatten]
...我将在选择标签中使用位置、数据中心 ID。
请问我如何在 Elixir 中实现类似的功能?
任何指向正确方向的指针都将受到高度赞赏
【问题讨论】:
-
像这样:
for %{"LOCATION" => k, "DATACENTERID" => v} <- data_set, into: %{}, do: {k, v}?