我已经看到了一些这方面的例子,但所有这些似乎依赖于知道你想要计算哪些元素的出现次数.我的数组是动态生成的,所以我无法知道我想要计算哪个元素的出现次数(我想计算所有这些元素的出现次数).任何人都可以建议吗?
提前致谢
编辑:
也许我应该更清楚,数组将包含多个不同的字符串(例如
["FOO", "FOO", "BAR", "FOOBAR"]
如何在不知道它们是什么的情况下计算foo,bar和foobar的出现次数?
我正在尝试编写一个在a上运行的通用直方图函数Array,但由于Type'Element'不符合协议'Hashable',我遇到了困难.
extension Array {
func histogram() -> [Array.Element: Int] {
return self.reduce([Array.Element: Int]()) { (acc, key) in
let value = (acc[key] == nil) ? 1 : (acc[key]! + 1)
return acc.dictionaryByUpdatingKey(key: key, value: value)
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中dictionaryByUpdatingKey(...)变异现有词典如下:
extension Dictionary {
func dictionaryByUpdatingKey(key: Dictionary.Key, value: Dictionary.Value) -> Dictionary {
var mutableSelf = self
let _ = mutableSelf.updateValue(value, forKey: key)
return mutableSelf
}
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试更换Array.Element用AnyHashable,然后强迫key as! AnyHashable,但这似乎凌乱和返回类型最好是相同类型的Array.Element,而不是 …