swift - 如何按其中一个元素对数组进行排序?

标签 swift collections

我创建了一个别名 - 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/

相关文章:

Scala 排序 map 没有方法 floor 或 ceil

ios - 使用 UITableView 调整 UICollectionView 大小,并以动态标题作为单元格

ios - Datepicker maximumDate 在当天早​​些时候停留在昨天

ios - 奇怪的元类型初始化错误

java - LinkedHashMap的订单列表

java - 为什么java.util.Collection不直接定义next(), hasNext()?

collections - 具有相同类型文档的不同 RavenDB 集合

c# - ObservableCollection 也监视集合中元素的变化

swift - 是什么让 Swift 中的调用变得昂贵?

swift - 是否可以使用不必要的分号作为编译时警告/错误?