gpt4 book ai didi

arrays - 根据日期合并字典数组

转载 作者:行者123 更新时间:2023-11-28 05:49:18 26 4
gpt4 key购买 nike

我有 2 个数组,都是 [[String:Any]] 类型,其中每个元素:

["date":Date,"value":CGFloat] //always looks like this

我什至可能有超过 2 (!)

我想创建一个具有相同结构的数组,该数组对所有数组中出现的每个日期的所有数组(2 个或更多)求和。

如果数组 1 的日期没有出现在其他数组(数组 2 等)上,我将简单地将 0 加到数组 1 的值中以用于此特定日期。

是否有一种简单有效的方法来做到这一点?

最佳答案

用结构代替字典,更方便:

struct MyStruct {
let date: Date
let value: CGFloat
}

让我们创建 3 个 MyStruct 数组:

let now = Date()
let later = now.addingTimeInterval(3600)
let earlier = now.addingTimeInterval(-3600)

let array1: [MyStruct] = [MyStruct(date: now, value: 1),
MyStruct(date: later, value: 2)]
let array2: [MyStruct] = [MyStruct(date: now, value: 3),
MyStruct(date: later, value: 4)]
let array3: [MyStruct] = [ MyStruct(date: earlier, value: 5),
MyStruct(date: later, value: 6)]

现在,让我们对元素进行分组,并为具有相同 date 属性的元素添加 value:

let allArrays = array1 + array2 + array3
let dict = Dictionary(allArrays.map { ($0.date, $0.value) },
uniquingKeysWith: { $0 + $1 })

现在您要做的就是将它转换回 MyStruct 数组:

let newArray = dict.map { MyStruct(date: $0.key, value: $0.value) }

你可以这样检查结果:

for element in newArray {
print("date =", element.date, "value =", element.value)
}

关于arrays - 根据日期合并字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53465993/

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