簡體   English   中英

根據鍵快速添加分組字典元素的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM