Saya ingin mengurutkan kamus di Swift. Saya punya kamus seperti:
"A" => Array[]
"Z" => Array[]
"D" => Array[]
dll. Saya ingin menjadi seperti
"A" => Array[]
"D" => Array[]
"Z" => Array[]
dll.
Saya telah mencoba banyak solusi pada SO tetapi tidak ada yang bekerja untuk saya. Saya menggunakan XCode6 Beta 5 dan di atasnya ada yang memberikan kesalahan kompiler dan beberapa solusi memberikan pengecualian. Jadi siapa saja yang dapat memposting copy pekerjaan kamus.
swift
sorting
dictionary
Aleem Ahmad
sumber
sumber
sortedKeys
fungsi.Jawaban:
EDIT:
Array yang diurutkan dari kode di atas hanya berisi kunci, sedangkan nilai harus diambil dari kamus asli. Namun,
'Dictionary'
juga merupakan'CollectionType'
pasangan (kunci, nilai) dan kita dapat menggunakan'sorted'
fungsi global untuk mendapatkan array yang diurutkan yang terdiri dari kunci dan nilai, seperti ini:EDIT2: Sintaks Swift perubahan bulanan saat ini lebih disukai
Global
sorted
sudah usang.sumber
let sortedKeys = dictionary.keys.sorted()
Swift 2.0
Versi terbaru dari jawaban Ivica M:
Cepat 3
Memperhatikan:
Jangan kaget bahwa tipe yang dihasilkan adalah array daripada kamus. Kamus tidak dapat disortir ! Jenis data yang dihasilkan adalah array yang diurutkan, seperti dalam jawaban @ Ivica.
sumber
Binary operator > can not be compared to two
operan Any`. Downcasting juga tidak berfungsiJika Anda ingin mengulangi kedua kunci dan nilai dalam urutan kunci, formulir ini cukup ringkas
sumber
sort
dansorted
. Swift 2:sort
telah menjadisortInPlace
dansorted
telah menjadisort
.Di swift 4 Anda dapat menulisnya lebih pintar:
sumber
Saya mencoba semua hal di atas, singkatnya yang Anda butuhkan adalah
sumber
Untuk Swift 4, berikut ini berhasil bagi saya:
sumber
Ini adalah alternatif elegan untuk menyortir kamus itu sendiri:
Mulai dari Swift 4 & 5
sumber
Di Swift 5 , untuk mengurutkan Kamus berdasarkan KEYS
Untuk mengurutkan Kamus berdasarkan VALUES
sumber
Untuk Swift 3, pengurutan berikut mengembalikan kamus yang diurutkan dengan kunci:
sumber
"diurutkan" di iOS 9 & xcode 7.3, swift 2.2 tidak mungkin, ubah "sortir" menjadi "sortir", seperti ini:
sumber
Array
dariTuples
, tidakDictionary
Cepat 5
Masukkan kamus Anda yang ingin Anda urutkan berdasarkan abjad dengan tombol.
dict.sorted (oleh: {$ 0.key <$ 1.key}) dengan sendirinya mengembalikan tuple (nilai, nilai) alih-alih kamus [nilai: nilai]. Jadi, for for mem-parsing tuple untuk kembali sebagai kamus. Dengan begitu, Anda memasukkan kamus & mendapatkan kamus kembali.
sumber
Swift 4 & 5
Untuk pengurutan kunci string:
Contoh:
sumber
Untuk Swift 3 berikut ini berfungsi untuk saya dan sintaks Swift 2 belum berfungsi:
sumber
sortedDict
? Apamenu
? Kode ini juga tampaknya tidak valid.Swift 3 diurutkan (berdasarkan: <)
sumber