["Jane", "Joe", "Job"], "contact_mobile_number" => ["1234", "56-6ren">
gpt4 book ai didi

elixir - 我如何提取 Elixir Map 中的值

转载 作者:行者123 更新时间:2023-12-02 11:44:51 24 4
gpt4 key购买 nike

假设我有这个

%{
"contact_full_name" => ["Jane", "Joe", "Job"],
"contact_mobile_number" => ["1234", "5678", "9012"],
"contact_relationship" => ["sibling", "stuff", "stuff"]
}

我如何迭代该 map ,获取 “简,1234, sibling ”“琼斯,“5678”,“东西”,等等

尝试使用

Enum.each(contact, fn {k, v} ->
IO.puts("#{k} --> #{v}")
end)

但这会产生

contact_full_name --> JaneJoeJob
contact_mobile_number --> 123456789012
contact_relationship --> siblingstuffstuff

最佳答案

您可以使用 Map.values/1 提取 map 值,然后使用 Enum.zip/1 压缩列表值:

contact_details = %{
"contact_full_name" => ["Jane", "Joe", "Job"],
"contact_mobile_number" => ["1234", "5678", "9012"],
"contact_relationship" => ["sibling", "stuff", "stuff"]
}

contact_details |> Map.values() |> Enum.zip()

这会产生:

[
{"Jane", "1234", "sibling"},
{"Joe", "5678", "stuff"},
{"Job", "9012", "stuff"}
]

但是,请注意,这会返回一个元组列表。您可以通过额外的步骤将元组转换为列表,以使用 Tuple.to_list/1 映射和转换元组。 :

contact_details 
|> Map.values()
|> Enum.zip()
|> Enum.map(&Tuple.to_list/1)

其产量:

[
["Jane", "1234", "sibling"],
["Joe", "5678", "stuff"],
["Job", "9012", "stuff"]
]

希望这有帮助:)

关于elixir - 我如何提取 Elixir Map 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com