[英]Add values of grouped dictionary elements based on keys swift
我有一系列称为“报价”的产品。 我对数组进行了分组,如下所示。
let groupedBonds = Dictionary(grouping: data.offerings) { (Offering) -> String in
return Offering.company
}
public struct Offering: Codable {
public let company: String
public let amount: Int
public let location: String
}
词典的关键字是companies -> ["ABCD", "EFGH", "IJKL", "MNOP"]
我想对各个公司的所有金额进行汇总。 请帮助我达到这个结果。
似乎您需要找到所有分组数组的总和,可以为此使用mapValues
:
let amounts = groupedBonds.mapValues { $0.reduce(0) { $0 + $1.amount} }
amounts
将是具有字典中的相同的密钥groupedBonds
(公司名在这种情况下),但具有与值变换闭合,其中,一致地或不,计算用于每个阵列的总和的结果。
假设data.offerings等于
let offerings = [
Offering(company: "A", amount: 7, location: "a"),
Offering(company: "A", amount: 4, location: "a"),
Offering(company: "B", amount: 2, location: "a"),
Offering(company: "C", amount: 3, location: "a"),
]
我想对各个公司的所有金额进行汇总。
let sumAmountByComany = offerings.reduce(into: [:]) { (result, offer) in
result[offer.company] = (result[offer.company] ?? 0 ) + offer.amount
}
结果
[
"C": 3,
"B": 2,
"A": 11
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.