Elixir - 将列表转换为 map

标签 elixir

什么是转换像 [1,2,3,4] 这样的列表的优雅、有效的方法?进入 map %{1=>2, 3=>4} ?我写了这个:

     Enum.reduce([1,2,3,4],%{}, fn(item, acc) ->
        case Map.get(acc, :last) do
          nil ->
            Map.put(acc, :last, item)
          last ->
            acc = Map.put(acc, item, last)
            Map.drop(acc, [:last])
        end
      end)

但这似乎不是很优雅。有没有更优雅和更清洁的方式来做到这一点?

最佳答案

您可以使用 Enum.chunk_every/2 :

[1, 2, 3, 4] 
  |> Enum.chunk_every(2) 
  |> Enum.map(fn [a, b] -> {a, b} end) 
  |> Map.new

关于Elixir - 将列表转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42262115/

相关文章:

elixir - 如何正确地将任意路径重新路由到 Plug.Static 文件的文件?

stream - Elixir 中的惰性列表理解?

elixir - 在 Elixir 中附加到文件的最佳方法是什么

elixir - 在 Elixir 中实现外/内循环的最佳方式

elixir - 在 Elixir 中是否有与 Python 的 defaultdict 等效的东西?

arrays - Ecto 查询 Postgres JSON 数组的值

erlang - Elixir GenServer 教程中的计时错误?

elixir - 清理 ExUnit 测试示例

elixir - Ecto 中的数据类型 - "value too long for type character varying(255)"

erlang - 当涉及多个参与者/进程时,如何计算 Elixir 中的 CPU 时间?