我正在尝试实现一个groupBy功能,将嵌套列表中的所有数字分组。到目前为止,我的代码如下:
struct MyClass {
var numbers: [Int]
...
}
var dict: [String : MyClass] = ...
let numbers = dict
.filter{ $0.0.containsString(searchString) }
.flatMap{ $0.1.numbers }
这会给我一个由整数数组组成的
Array
。然而,我想要一个包含每个唯一数字及其出现次数的字典 [Int : Int]。例如:[1,2,3,4,1,2,2,1]
should be:
[1 : 2, 2 : 3, 3 : 1, 4 : 1]
我知道有一个groupBy
运算符,但是Swift似乎没有这个。我尝试使用reduce
:
func reducer(accumulator: [Int: Int], num: Int) -> [Int : Int] {
var acc = accumulator
acc[num]! += 1
return acc
}
filtered.reduce([:], combine: reducer)
但是当我想运行它时,它会崩溃。不确定为什么,我收到了EXC_BAD_INSTRUCTION的错误。
我会非常感激任何帮助。
reduce
来创建字典。 - Eendjefiltered
不存在。 - ryantxr