Chcę posortować słownik w języku Swift. Mam słownik taki jak:
"A" => Array[]
"Z" => Array[]
"D" => Array[]
itd. Chcę, żeby tak było
"A" => Array[]
"D" => Array[]
"Z" => Array[]
itp.
Wypróbowałem wiele rozwiązań na SO, ale nikt dla mnie nie pracował. Używam XCode6 Beta 5 i na nim niektórzy dają błąd kompilatora, a niektóre rozwiązania dają wyjątki. Więc każdy, kto może opublikować kopię roboczą sortowania słownikowego.
swift
sorting
dictionary
Aleem Ahmad
źródło
źródło
sortedKeys
funkcję.Odpowiedzi:
EDYTOWAĆ:
Posortowana tablica z powyższego kodu zawiera tylko klucze, podczas gdy wartości muszą być pobierane z oryginalnego słownika. Jednak
'Dictionary'
jest również'CollectionType'
parami of (klucz, wartość) i możemy użyć'sorted'
funkcji globalnej, aby uzyskać posortowaną tablicę zawierającą zarówno klucze, jak i wartości, na przykład:EDIT2: Preferowana jest obecnie składnia Swift zmieniająca się co miesiąc
Globalny
sorted
jest przestarzały.źródło
let sortedKeys = dictionary.keys.sorted()
Swift 2.0
Zaktualizowana wersja odpowiedzi Ivica M:
Szybki 3
Ogłoszenie:
Nie zdziw się, że wynikowy typ jest tablicą, a nie słownikiem. Nie można sortować słowników ! Wynikowy typ danych to posortowana tablica, tak jak w odpowiedzi @ Ivica.
źródło
Binary operator > can not be compared to two
Any` argumentów. Downcasting też nie działaJeśli chcesz iterować zarówno po kluczach, jak i wartościach w kolejności posortowanej według kluczy, ten formularz jest dość zwięzły
źródło
sort
isorted
. Swift 2:sort
stał sięsortInPlace
isorted
stał sięsort
.W Swift 4 możesz napisać to mądrzej:
źródło
Wypróbowałem wszystkie powyższe, w skrócie wszystko, czego potrzebujesz, to
źródło
W przypadku Swift 4 zadziałały następujące rozwiązania:
źródło
To elegancka alternatywa dla sortowania samego słownika:
Od wersji Swift 4 i 5
źródło
W Swift 5 , aby posortować słownik według KEYS
Aby posortować słownik według WARTOŚCI
źródło
W przypadku języka Swift 3 poniższe sortowanie zwraca słownik posortowany według kluczy:
źródło
„posortowane” w iOS 9 i xcode 7.3, Swift 2.2 jest niemożliwe, zmień „sort” na „sort”, na przykład:
źródło
Array
ofTuples
, a nieDictionary
Szybki 5
Wprowadź słownik, który chcesz posortować alfabetycznie według kluczy.
dict.sorted (by: {$ 0.key <$ 1.key}) przez siebie zwraca krotkę (wartość, wartość) zamiast słownika [wartość: wartość]. W ten sposób pętla for analizuje krotkę, aby powrócić jako słownik. W ten sposób umieszczasz słownik i odzyskujesz słownik.
źródło
Swift 4 i 5
W przypadku sortowania kluczy ciągów:
Przykład:
źródło
W przypadku Swift 3 działały u mnie następujące rzeczy, a składnia Swift 2 nie działała:
źródło
sortedDict
? Co to jestmenu
? Ten kod również nie wydaje się być prawidłowy.Swift 3 jest posortowany (według: <)
źródło