我有一个具有多个值(双精度)的数组,其中许多是重复的。我想返回或打印所有唯一值的列表,以及给定值在数组中出现多少次的计数。我对Swift来说还很陌生,我尝试了几种不同的方法,但是我不确定实现此目的的最佳方法。
像这样的内容:[65.0、65.0、65.0、55.5、55.5、30.25、30.25、27.5]
将打印(例如):“ 3 at 65.0、2 at 55.5、2 at 30.25、1 at 27.5”。
我不太关心输出,而不是实现此目的的方法。
谢谢!
您可以枚举数组,并将值添加到字典中。
var array: [CGFloat] = [65.0, 65.0, 65.0, 55.5, 55.5, 30.25, 30.25, 27.5] var dictionary = [CGFloat: Int]() for item in array { dictionary[item] = dictionary[item] ?? 0 + 1 } print(dictionary)
或者你可以在数组上做foreach:
array.forEach { (item) in dictionary[item] = dictionary[item] ?? 0 + 1 } print(dictionary)
或如@rmaddy所说:
var set: NSCountedSet = [65.0, 65.0, 65.0, 55.5, 55.5, 30.25, 30.25, 27.5] var dictionary = [Float: Int]() set.forEach { (item) in dictionary[item as! Float] = set.count(for: item) } print(dictionary)