arrays - 如何将基于日期项的数组数据分组到字典中

标签 arrays swift dictionary

我有一个 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/

相关文章:

swift - 按键排序词典

java - Map.of 与 EnumMap 用于具有枚举键的不可变映射

javascript - 从 AJAX 响应中提取值

c# - 在 C# 中使用大型静态数组(Windows Phone 7 上的 Silverlight)

c++ - 将迭代器转换为另一种类型

ios - 在点击返回之前运行一个函数。 iOS, swift ,

Swift - 解析查询 whereKey 包含

ios - 在swift iOS中计算高字节和低字节?

C 结构体值在函数内部和外部不同

arrays - Swift:将二维数组转换为自定义对象数组