You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按Double元素对Swift自定义元组类型数组排序?

按元组的频率值降序排序数组

你已经完成了符号频率统计和关联数组构建的工作,接下来要对frequenciesOutputText数组按元组的第二个元素(频率百分比)降序排序非常简单,直接利用Swift的sorted(by:)方法就能搞定:

// 按频率降序排序数组(生成新数组,不修改原数组)
let sortedFrequencies = frequenciesOutputText.sorted { $0.1 > $1.1 }

// 如果需要直接修改原数组,可以用sort(by:)
// frequenciesOutputText.sort { $0.1 > $1.1 }

代码说明:

  • sorted(by:)会根据你传入的闭包逻辑生成一个全新的排序后数组,原数组保持不变;如果希望直接修改原数组,改用sort(by:)即可
  • 闭包里的$0和$1代表数组中任意两个待比较的元组,$0.1取第一个元组的Double类型频率值,$1.1取第二个的,用>就实现了降序排列

输出符合预期格式的结果

如果你需要输出("о", 10.97)%这类格式的内容,可以遍历排序后的数组,同时把频率值格式化为指定小数位数:

for item in sortedFrequencies {
    // 用%.2f把频率格式化为两位小数,和你期望的格式匹配
    print("(\(item.0), \(String(format: "%.2f", item.1)))%")
}

可选优化:过滤无频率的符号

如果统计结果里有很多频率为0的符号,排序前可以先过滤掉,让结果更简洁:

let filteredSortedFrequencies = frequenciesOutputText
    .filter { $0.1 > 0 } // 只保留频率大于0的元素
    .sorted { $0.1 > $1.1 }

这样处理后,你就能得到完全符合预期的、按频率从高到低排列的符号列表啦!

内容的提问来源于stack exchange,提问作者Luigi Vampa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:16:47