Как отсортировать данные по убыванию - PullRequest
0 голосов
/ 28 мая 2020

У меня есть строковые данные типа «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]

1 Ответ

0 голосов
/ 28 мая 2020

Сначала вам нужно разделить компоненты запятой, сопоставить компоненты с целыми числами, уменьшить количество элементов, считая их частоту, а затем выполнить произвольную сортировку результата:

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...