Я хочу отсортировать словарь в Swift. У меня есть словарь вроде:
"A" => Array[]
"Z" => Array[]
"D" => Array[]
и т. д. я хочу, чтобы это было как
"A" => Array[]
"D" => Array[]
"Z" => Array[]
и т.п.
Я пробовал много решений на SO, но у меня никто не работал. Я использую XCode6 Beta 5, и некоторые из них выдают ошибку компилятора, а некоторые решения дают исключения. Так что всем, кто сможет выложить рабочую копию словаря сортировки.
swift
sorting
dictionary
Алим Ахмад
источник
источник
sortedKeys
функция.Ответы:
РЕДАКТИРОВАТЬ:
Отсортированный массив из приведенного выше кода содержит только ключи, а значения должны быть извлечены из исходного словаря. Однако
'Dictionary'
это также'CollectionType'
пара (ключ, значение), и мы можем использовать глобальную'sorted'
функцию, чтобы получить отсортированный массив, содержащий как ключи, так и значения, например:EDIT2: ежемесячно меняющийся синтаксис Swift в настоящее время предпочитает
Глобальный
sorted
устарел.источник
let sortedKeys = dictionary.keys.sorted()
Swift 2.0
Обновленная версия ответа Ivica M:
Swift 3
Примечание:
Не удивляйтесь, что результирующий тип - это массив, а не словарь. Словари не сортируются ! Результирующий тип данных представляет собой отсортированный массив, как и в ответе @Ivica.
источник
Binary operator > can not be compared to two
Any` операнды. Даункастинг тоже не работаетЕсли вы хотите перебрать и ключи, и значения в порядке сортировки ключей, эта форма будет достаточно лаконичной.
источник
sort
иsorted
. Swift 2:sort
сталsortInPlace
иsorted
сталsort
.В Swift 4 вы можете написать умнее:
источник
Я попробовал все вышеперечисленное, вкратце все, что вам нужно, это
источник
Для Swift 4 у меня сработало следующее:
источник
Это элегантная альтернатива сортировке самого словаря:
Начиная с Swift 4 и 5
источник
В Swift 5 для сортировки словаря по КЛЮЧАМ
Для сортировки словаря по ЗНАЧЕНИЯМ
источник
Для Swift 3 следующая сортировка возвращает отсортированный словарь по ключам:
источник
"sorted" в iOS 9 и xcode 7.3, swift 2.2 невозможен, измените "sorted" на "sort", например:
источник
Array
ofTuples
, а не aDictionary
Swift 5
Введите свой словарь, который вы хотите отсортировать в алфавитном порядке по клавишам.
dict.sorted (by: {$ 0.key <$ 1.key}) сам по себе возвращает кортеж (значение, значение) вместо словаря [значение: значение]. Таким образом, цикл for анализирует кортеж и возвращает его в виде словаря. Таким образом, вы вставите словарь и получите его обратно.
источник
Swift 4 и 5
Для сортировки строковых ключей:
Пример:
источник
Для Swift 3 у меня сработало следующее, а синтаксис Swift 2 не сработал:
источник
sortedDict
? Что естьmenu
? Этот код также кажется недействительным.Swift 3 отсортирован (по: <)
источник