首页 > 解决方案 > 如何将列表从一种格式更改为另一种格式

问题描述

我正在尝试使用枚举函数更改列表的格式。

原始列表如下所示

myInitialList = 
[
 {1,
   [
     ["A3", "Teddy"],
     ["B3", "t@gmail.com"],
     ["C3", "56123456"],
     ["D3", "spain"]
   ]},
  {2,
   [
     ["A4", "Katrin"],
     ["B4", "m@yahoo.com"],
     ["C4", "85002145"],
     ["D4", "USA"]
   ]},
  {3,
   [
     ["A2", "name"],
     ["B2", "email"],
     ["C2", "phone"],
     ["D2", "country"]
   ]}
]

我想过滤上面的列表以获得以下结果

myFinalList = 
[
    %{
        name: "Teddy", 
        email: "t@gmail.com", 
        phone: "56123456", 
        country: "spain"
    }, 
    %{
        name: "Katrin", 
        email: "m@yahoo.com", 
        phone: "85002145", 
        country: "USA"
    }
]

有谁知道我如何构建过滤器功能?

这将使我能够轻松地将数据插入到我的数据库中。我没有真正尝试过任何事情,因为我从一开始就完全陷入困境

在代码中,它应该看起来像

myFinalList = myInitialList |> Enum.filter(.....)

标签: elixir

解决方案


您正在寻找该Enum.map/2功能。哟可以myFinalList用这种格式这样做:

myFinalList =
  Enum.map(myInitialList, fn
    {_index, [[_, name], [_, email], [_, phone], [_, country]]} ->
      %{
        name: name,
        email: email,
        phone: phone,
        country: country
      }
  end)

推荐阅读