一尘不染

Swift 4-如何从数组中返回重复值的计数?

swift

我有一个具有多个值(双精度)的数组,其中许多是重复的。我想返回或打印所有唯一值的列表,以及给定值在数组中出现多少次的计数。我对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”。

我不太关心输出,而不是实现此目的的方法。

谢谢!


阅读 292

收藏
2020-07-07

共1个答案

一尘不染

您可以枚举数组,并将值添加到字典中。

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)
2020-07-07