gpt4 book ai didi

elixir - 如何映射 map 列表并添加它们?

转载 作者:行者123 更新时间:2023-12-02 01:56:17 25 4
gpt4 key购买 nike

我有一个类似这样的 map 列表

    iex(84)> a                                                            
[
%{a: 1, b: 2, c: [%{x: 1, y: 2}, %{x: 2, y: 3}]},
%{a: 3, b: 4, c: [%{x: 2, y: 3}, %{x: 2, y: 3}]},
%{a: 5, b: 6, c: [%{x: 3, y: 4}, %{x: 3, y: 4}]}
]

我正在尝试得到这样的结果

  [
%{a: 1, b: 2, c: 8},
%{a: 3, b: 4, c: 10},
%{a: 5, b: 6, c: 14}
]

无法映射“c”的值,如果这样做,我将丢失初始映射。我该怎么办?

最佳答案

您可以使用 for/1使用 map 更新语法来替换 c 键:

input = [
%{a: 1, b: 2, c: [%{x: 1, y: 2}, %{x: 2, y: 3}]},
%{a: 3, b: 4, c: [%{x: 2, y: 3}, %{x: 2, y: 3}]},
%{a: 5, b: 6, c: [%{x: 3, y: 4}, %{x: 3, y: 4}]}
]

for map <- input do
%{map | c: Enum.flat_map(map.c, &Map.values/1) |> Enum.sum()}
end

输出:

[%{a: 1, b: 2, c: 8}, %{a: 3, b: 4, c: 10}, %{a: 5, b: 6, c: 14}]

关于elixir - 如何映射 map 列表并添加它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69579882/

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