我需要在一系列快速字典中找到最常见的字典。我尝试使用以下内容:
func frequencies
<S: SequenceType where S.Generator.Element: Hashable>
(source: S) -> [(S.Generator.Element,Int)] {
var frequency: [S.Generator.Element:Int] = [:]
for x in source {
frequency[x] = (frequency[x] ?? 0) + 1
}
return sorted(frequency) { $0.1 > $1.1 }
}
但是我不能使用类型为的参数列表来调用“频率” [[String:String]]()
。如何编辑上面的函数以采用字典数组,或完全使用其他方法?
您可以使用NSCountedSet
提供此类功能的:
let arr = [
[
"foo": "bar"
],
[
"foo": "bar"
],
[
"foo": "baz"
],
]
let countedSet = NSCountedSet(array: arr)
for dict in countedSet {
println(countedSet.countForObject(dict))
println(dict)
}
印刷
2个
[“ foo”:“ bar”]
1个
[“ foo”:“ baz”]
如果您在初始化程序无法正常启动时遇到问题,请使用:
let countedSet = NSCountedSet()
countedSet.addObjectsFromArray(arr)
代替
let countedSet = NSCountedSet(array: arr)
我尚未使用Swift 2进行测试,但用法应大致相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句