1, "name" => "Alice"}, %{"id" => 2, "name" => "Bob"}, %{"id" => -6ren">
gpt4 book ai didi

Elixir:更新 map 列表

转载 作者:行者123 更新时间:2023-12-04 08:23:32 26 4
gpt4 key购买 nike

假设我们有以下内容:

list = 
[
%{"id" => 1, "name" => "Alice"},
%{"id" => 2, "name" => "Bob"},
%{"id" => 3, "name" => "Charlie"}
]

为了向每个元素添加具有值 person 的键 type,我们可以这样做:list |> Enum.map(fn x -> Map.put(x, "type", "person") end) 这将导致:

[
%{"id" => 1, "name" => "Alice", "type" => "person"},
%{"id" => 3, "name" => "Bob", "type" => "person"},
%{"id" => 3, "name" => "Charlie", "type" => "person"}
]

现在,假设我们有另一个列表:

types = ["human", "alien", "unknown"]

如何组合listtypes 以便最终结果为:

[
%{"id" => 1, "name" => "Alice", "type" => "human"},
%{"id" => 2, "name" => "Bob", "type" => "alien"},
%{"id" => 2, "name" => "Charlie", "type" => "unknown"}
]

?

最佳答案

使用 Enum.zip/2Enum.map/2应该做的伎俩:

list
|> Enum.zip(types)
|> Enum.map(fn {list, type} -> Map.put(list, "type", type) end)

[
%{"id" => 1, "name" => "Alice", "type" => "human"},
%{"id" => 2, "name" => "Bob", "type" => "alien"},
%{"id" => 3, "name" => "Charlie", "type" => "unknown"}
]

关于Elixir:更新 map 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65385689/

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