gpt4 book ai didi

arrays - 在 Swift 中查找字符串数组的模式

转载 作者:行者123 更新时间:2023-11-28 06:21:29 25 4
gpt4 key购买 nike

我是 Swift 的新手,使用的是 Xcode 8.3 版。我有一个字符串数组,我正在尝试查找该数组的模式值。

我已经尝试了这个 Stack Overflow 帖子中的建议代码(并搜索了其他代码):Swift 3: Getting the most frequent value of an array

但我没有让它工作。

在尝试 NSCountedSet 时:

let countedSet = NSCountedSet(array: myArray)
let mostFrequent = countedSet.max { countedSet.count(for: $0) <
countedSet.count(for: $1) }

控制台在运行时打印“nil”,可能是因为我的数组是字符串数组?似乎 .max 在我的 Xcode 版本中也不再有效。我不确定。

我也尝试过使用“hashable”和“reduce”,但无法使它们起作用。我收到错误“声明仅在文件范围内有效”:

extension Array where Element: Hashable {
var mode: Element? {
return self.reduce([Element: Int]()) {
var counts = $0
counts[$1] = ($0[$1] ?? 0) + 1
return counts
}.max { $0.1 < $1.1 }?.0
}
}

我想将模式存储为一个值,所以我不知道使用字典是否合适。

如有任何建议,我们将不胜感激。

谢谢!

最佳答案

如果你有一个数组数组,最简单的方法是使用 joined 将它们折叠成一个简单的数组:

let samples = [[ 1, 2, 3 ], [4, 5, 6, 1]]
let flattened = [Int](samples.joined())
let counted = NSCountedSet(array:flattened)
let max = counted.max { counted.count(for: $0) < counted.count(for: $1) }

关于arrays - 在 Swift 中查找字符串数组的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com