gpt4 book ai didi

swift - 在 Swift 中使用 reduce 构建字典

转载 作者:搜寻专家 更新时间:2023-10-31 22:10:20 26 4
gpt4 key购买 nike

我正在尝试使用 Swift reduce从 Swift 中的集合构建字典。我有以下变量:

var _squares  : [String] = []
var _unitlist : [[String]] = []
var _units = [String: [[String]]]()

我要填写 _units字典 int 以下方式:

  • 我想遍历 _squares 中的每个元素
  • 我想查看 _unitlist 中的所有列表并仅过滤包含该元素的那些
  • 构建一个字典,将每个元素作为键,并将包含此类元素的列表列表作为值。

举个例子。如果我们有:

squares = ["A"]
unitlist = [["A", "B", "C"], ["A", "C"], ["B", "C", "F"]]

预期的输出应该是一个以“A”为键的字典,[["A", "B", "C"], ["A", "C"]]作为值(value)。

我试过这样的:

_units = _squares.flatMap { s in
_unitlist.flatMap { $0 }.filter {$0.contains(s)}
.reduce([String: [[String]]]()){ (dict, list) in
dict.updateValue(l, forKey: s)
return dict
}
}

我用了flatMap两次迭代,然后我过滤并尝试使用 reduce .

但是,使用这段代码我遇到了以下错误:Cannot assign value of type '[(key: String, value: [[String]])]' to type '[String : [[String]]]'这对我来说有点晦涩。

最佳答案

let squares = ["A"]
let unitlist = [["A", "B", "C"], ["A", "C"], ["B", "C", "F"]]

let units = squares.reduce(into: [String: [[String]]]()) { result, key in
result[key] = unitlist.filter { $0.contains(key) }
}

关于swift - 在 Swift 中使用 reduce 构建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033557/

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