gpt4 book ai didi

arrays - 按名称获取数组的总和

转载 作者:行者123 更新时间:2023-11-30 10:48:32 25 4
gpt4 key购买 nike

我正在为我的工作制作一个个人应用程序。我想列出我做的每件事的穷人,这样我就知道我一天需要什么重量。

所以可以说我可以做 3 种不同的东西

food 1 = sugar: 2, eggs: 4, cheese: 3
food 2 = sugar: 5, eggs: 4, brownSugar: 3
food 3 = flour: 2, eggs: 4, cheese: 3

假设今天必须制作 2 批食品 1、3 批食品 2 和 1 批食品 3。

它会输出

Sugar: 19
Eggs: 24
Cheese: 9
brownSugar: 9
Flour: 2

如果有人能为我指明正确的方向,那就太好了..我正在考虑将每种食物设置为一个数组,并尝试按名称添加它们的每种成分值。

最佳答案

由于您的食物基本上是成对的(成分:计数),因此理想情况下将用字典表示,其中键是您的成分(现在使用String,以后可以是任何Hashable ):

let food1 = ["sugar": 2, "eggs": 4, "cheese": 3]
let food2 = ["sugar": 5, "eggs": 4, "brownSugar": 3]
let food3 = ["flour": 2, "eggs": 4, "cheese": 3]

这使我们可以使用 Dictionary.merging(_, uniquingKeysWith:) 轻松组合它们

food1.merging(food2, uniquingKeysWith: +)
/// ["sugar": 7, "brownSugar": 3, "cheese": 3, "eggs": 8]

在这里,我们将 food1food2 合并,并通过计数求和来合并相同成分的数量。

要合并食物列表,我们可以使用 reduce(into:, _)

[food1, food2, food3]
.reduce(into: [:]) { sum, food in
sum.merge(food, uniquingKeysWith: +)
}
/// ["sugar": 7, "brownSugar": 3, "cheese": 6, "flour": 2, "eggs": 12]

这里我们从空总和 ([:]) 开始,并将所有食物合并到其中。

关于arrays - 按名称获取数组的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55203474/

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