我有一个 Item
对象数组:
struct Item {
let date: Date
let amount: Double
}
如何在 Swift 3 中将这些项目分组到字典中,以 Date
为键并以 amount
为该日期的总和?
这是一个例子:
let data = [Item(date:"2017.02.15", amount: 25),
Item(date:"2017.02.14", amount: 50),
Item(date:"2017.02.11", amount: 35),
Item(date:"2017.02.15", amount: 15)]
结果应该是:
["2017.02.15": 40, "2017.02.14": 50, "2017.02.11": 35]
最佳答案
鉴于我们稍微修正了您的示例(使用 String
作为 Date
示例),您可以简单地传递 data
中的元素并添加到(并可选地增加)字典中相应的键值对。
struct Item {
let date: String
let amount: Double
}
let data = [Item(date: "2017.02.15", amount: 25),
Item(date: "2017.02.14", amount: 50),
Item(date: "2017.02.11", amount: 35),
Item(date: "2017.02.15", amount: 15)]
var dict: [String: Double] = [:]
for item in data {
dict[item.date] = (dict[item.date] ?? 0) + item.amount
}
print(dict) // ["2017.02.14": 50.0, "2017.02.15": 40.0, "2017.02.11": 35.0]
关于arrays - 如何将基于日期项的数组数据分组到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42256816/