【问题标题】:How to sort data with descending order如何按降序对数据进行排序
【发布时间】:2020-05-28 17:46:49
【问题描述】:

我有像“1,2,3,4,5,1,2,1,5,6”这样的字符串数据。我用“,”分开,并一一数了数。之后,我想按降序订购它们。我怎样才能用 Swift 做到这一点。

我想得到这样的结果。键应该是上面的字符串数字(转换为 Int 很好)。值应该是数据的数量。如果某些数据具有相同的计数,则应先使用较小的键。

最终结果

["1" => 3, "2" => 2, "5" => 2, "3" => 1, "4" => 1, "6" => 1]

[1 => 3, 2 => 2, 5 => 2, 3 => 1, 4 => 1, 6 => 1]

【问题讨论】:

标签: ios swift


【解决方案1】:

首先,您需要用逗号分隔组件,将组件映射为整数,减少计算其频率的元素,然后对结果进行自定义排序:

let string = "1,2,3,4,5,1,2,1,5,6"
let results = string.components(separatedBy: ",")
    .compactMap(Int.init)
    .reduce(into: [:]) { $0[$1, default: 0] += 1 }
    .sorted(by: { $1.value < $0.value ? true :
                  $0.key < $1.key })
print(results)
// "[(key: 1, value: 3), (key: 2, value: 2), (key: 5, value: 2), (key: 3, value: 1), (key: 4, value: 1), (key: 6, value: 1)]\n"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多