我有以下列表:
l = [
%{id: 1, name: "aash", possess: "car"},
%{id: 1, name: "aash", possess: "bike"},
%{id: 2, name: "rahul", possess: "scooter"}
]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下格式:
ans = [
%{id: 1, name: "aash", possess: ["car", "bike"]},
%{id: 2, name: "rahul", possess: ["scooter"]}
]
Run Code Online (Sandbox Code Playgroud)
关于如何在灵药中做到这一点的任何想法?由于所有变量都是不可变的,我不知道如何实现上述转换.
我将使用Enum.group_by/3mapper函数(第三个参数)仅返回possess字段.
[
%{id: 1, name: "aash", possess: "car"},
%{id: 1, name: "aash", possess: "bike"},
%{id: 2, name: "rahul", possess: "scooter"}
]
|> Enum.group_by(&{&1.id, &1.name}, & &1.possess)
|> Enum.map(fn {{id, name}, possess} ->
%{id: id, name: name, possess: possess}
end)
|> IO.inspect
Run Code Online (Sandbox Code Playgroud)
输出:
[%{id: 1, name: "aash", possess: ["car", "bike"]},
%{id: 2, name: "rahul", possess: ["scooter"]}]
Run Code Online (Sandbox Code Playgroud)