我有几个这样的键值列表
fans = [%{"end_time" => "2021-01-02T08:00:00+0000", "value" => 514210},
%{"end_time" => "2021-01-03T08:00:00+0000", "value" => 513702},
%{"end_time" => "2021-01-04T08:00:00+0000", "value" => 513720},
%{"end_time" => "2021-01-05T08:00:00+0000", "value" => 513775}]
unique_weakly = [ %{"end_time" => "2021-01-02T08:00:00+0000", "value" => 846593},
%{"end_time" => "2021-01-03T08:00:00+0000", "value" => 893488},
%{"end_time" => "2021-01-04T08:00:00+0000", "value" => 1068204},
%{"end_time" => "2021-01-05T08:00:00+0000", "value" => 1197864}]
unique_monthly = [ %{"end_time" => "2021-01-02T08:00:00+0000", "value" => 2660773},
%{"end_time" => "2021-01-03T08:00:00+0000", "value" => 2641936},
%{"end_time" => "2021-01-04T08:00:00+0000", "value" => 2632740},
%{"end_time" => "2021-01-05T08:00:00+0000", "value" => 2632076}]
users_weakly = [ %{"end_time" => "2021-01-02T08:00:00+0000", "value" => 94173},
%{"end_time" => "2021-01-03T08:00:00+0000", "value" => 104654},
%{"end_time" => "2021-01-04T08:00:00+0000", "value" => 127377},
%{"end_time" => "2021-01-05T08:00:00+0000", "value" => 144296}]
我想根据 end_time
合并它们,预期结果应该是
[%{end_time: "2021-01-02T08:00:00+0000",
fans: 514210,
unique_weakly: 846593,
unique_monthly: 2660773,
users_weakly: 94173},
%{end_time: "2021-01-03T08:00:00+0000",
fans: 513702,
unique_weakly: 893488,
unique_monthly: 2641936,
users_weakly: 104654},
......]
有人能帮我理解如何做到这一点吗,谢谢?
答案 0 :(得分:1)
你可以写一个这样的插入函数:
def insert(map, list, key) do
Enum.reduce(list, map, fn %{"end_time" => end_time, "value" => value}, map ->
Map.update(map, end_time, %{"end_time" => end_time, key => value}, &Map.put(&1, key, value))
end)
end
然后像这样使用它:
%{}
|> insert(fans, "fans")
|> insert(unique_weakly, "unique_weakly")
|> insert(unique_monthly, "unique_monthly")
|> insert(users_weakly, "users_weakly")
|> Map.values()
结果:
[
%{
"end_time" => "2021-01-02T08:00:00+0000",
"fans" => 514210,
"unique_monthly" => 2660773,
"unique_weakly" => 846593,
"users_weakly" => 94173
},
%{
"end_time" => "2021-01-03T08:00:00+0000",
"fans" => 513702,
"unique_monthly" => 2641936,
"unique_weakly" => 893488,
"users_weakly" => 104654
},
%{
"end_time" => "2021-01-04T08:00:00+0000",
"fans" => 513720,
"unique_monthly" => 2632740,
"unique_weakly" => 1068204,
"users_weakly" => 127377
},
%{
"end_time" => "2021-01-05T08:00:00+0000",
"fans" => 513775,
"unique_monthly" => 2632076,
"unique_weakly" => 1197864,
"users_weakly" => 144296
}
]