【问题标题】:How to convert Map entries into list of pair in elixir如何将 Map 条目转换为 elixir 中的对列表
【发布时间】:2020-08-08 00:40:32
【问题描述】:

我有一张地图,需要将其转换为如下所示的地图。

Input = %{DateFrom: "2020-08-05", DateTo: "2020-08-08", TransactionId: "1"}
Output = [ {"DateFrom", "2020-08-05"}, {"DateTo", "2020-08-08"}, {"TransactionId", "1"}]

提前谢谢你。

【问题讨论】:

  • 这甚至无法编译,引发MatchError。在此处发布问题时,您必须确认您提供了正确的输入并付出了一些努力。

标签: elixir


【解决方案1】:

您可以使用列表推导。

for {k, v} <- input, into: [], do: {"#{k}", "#{v}"}

https://elixirschool.com/en/lessons/basics/comprehensions/#using-into

另外,你必须保持你的变量名小写,在 erlang 变量中以大写字母开头。

【讨论】:

  • 它的输出会像 [DateFrom: "2020-08-05", DateTo: "2020-08-08", TransactionId: "1"]
  • 我做了一个更新,之前的输出是一个关键字列表,现在是一个带有元组的列表
【解决方案2】:

我使用下面的行找到我的答案。

Input |> Enum.map(fn {k, v} ->  {"#{k}","#{v}"} end)

【讨论】:

  • 这甚至无法编译,引发Protocol.UndefinedError。此外,您应该接受@Mike 提供的技术上相同的答案,而不是发布您自己的答案。
  • @AlekseiMatiushkin 我不知道你为什么觉得它不能编译,请检查我运行它的屏幕截图,输出正是我需要的。让我知道我的解决方案出了什么问题。
  • elixir 区分大小写。
  • @AlekseiMatiushkin 我知道。但它与我的答案有什么关系?如果一切顺利,请按“这个答案很有用”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多