如何从长生不老药中的两个数组创建地图?

How do I create a map from two arrays in elixir?

嗨,我是 Elixir 的新手

而且我无法根据下面解释的两个列表创建地图

我有两个列表,想将数据转换为地图,如下所示

rows_array = ['R1', 'R2', 'R3', 'R4' ]

data_arrays = [
  [c1, v11, v12, v13, v14],
  [c2, v21, v22, v23, v24],
  [c3, v31, v32, v33, v34],
  [c4, v41, v42, v43, v44],
  [c5, v51, v52, v53, v54]
]

我想创建如下所示的地图

%{
  "R1": %{c1: v11, c2: v21, c3: v31, c4: v41, c5: c51},
  "R2": %{c1: v12, c2: v22, c3: v32, c4: v42, c5: c52},
  "R3": %{c1: v13, c2: v23, c3: v33, c4: v43, c5: c53},
  "R4": %{c1: v14, c2: v24, c3: v34, c4: v44, c5: c54},
}

谢谢

以下应该有效。 请注意 Enum.zip_with/3 自 1.12 以来是新的,但您可以使用 Enum.zip 然后 Enum.map.

完成相同的操作
empty_rows = Enum.map(rows_array, fn _ -> %{} end)

rows =
  Enum.reduce(data_arrays, empty_rows, fn [column_name | values], rows_acc ->
    Enum.zip_with(values, rows_acc, fn value, row ->
      Map.put(row, column_name, value)
    end)
  end)

result = Enum.zip(rows_array, rows) |> Map.new()

另外,我保留了你的变量名,但请注意,这些都是链表而不是数组。 Erlang 附带了一个 :array 模块,但在实践中很少使用。