我创建了一个别名 - typealias ratesSymbol = (String, Double)。 我使用别名作为数据类型FrequencySymbol 创建了一个数组。然后我用元素填充了这个数组,现在我需要按 Double 元素对这个数组进行排序。我该怎么做?
typealias frequenciesSymbol = (String, Double)
//我们认为遇到每个符号的频率
var frequencies2 = [Double](repeating: 0, count: 33)
for c in outputText.unicodeScalars {
switch c {
case "а"..."я":
frequencies2[Int(c.value - UnicodeScalar("а").value)] += 1
default:
break
}
}
//传输频率(%)
for i in 0..<(frequencies2.count) {
frequencies2[i] = (frequencies2[i] * 100) / Double(outputText.count)
}
//创建一个数组,在其中我们根据符号与符号形成频率
var frequenciesOutputText = [frequenciesSymbol]()
//根据符号写入频率值数组
for i in 0..<(frequencies2.count-1) {
frequenciesOutputText.append((rus[i], Double(frequencies2[i])))
print("\(rus[i]) - \(frequencies2[i])%")
}
//按频率值对数组进行排序
我想要得到这样的东西
(“о”, 10.97)% (“е”, 8.45)% (“а”, 8.01)% (“i”, 7.35)% (“-”, 6.7)% (“т”, 6.26)% (“с”, 5.47)% (“р”, 4.73)% (“в”, 4.54)% (“л”, 4.4)% (“к”, 3.49)% (“м”, 3.21)% (“д”, 2.98)% (“п”, 2.81)% (“у”, 2.62)% (“я”, 2.01)% (“ы”, 1.9)% ("ь", 1.74)% ("г", 1.7)% (“з”, 1.65)% (“б”, 1.59)% ("ч", 1.44)% (“©”, 1.21)% ("х", 0.97)% (“ж”, 0.94)% (“ш”, 0.73)% (“ю”, 0.64)% (“ц”, 0.48)% (“щ”, 0.36)% (“э”, 0.32)% (“ф”, 0.26)% ("ъ", 0.04)%
最佳答案
这应该有效 考虑一下
frequenciesSymbol = (name: String, value: Double)
frequenciesSymbol.sorted(by: { $0. value > $1. value })
关于swift - 如何按其中一个元素对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58463802/