Swift で辞書をソートしたいです。次のような辞書があります:
"A" => Array[]
"Z" => Array[]
"D" => Array[]
などなど。
"A" => Array[]
"D" => Array[]
"Z" => Array[]
等
SO で多くのソリューションを試しましたが、どれもうまくいきませんでした。XCode6 Beta 5 を使用していますが、一部のソリューションではコンパイラ エラーが発生し、一部のソリューションでは例外が発生します。辞書ソートの作業コピーを投稿できる方はいらっしゃいますか。
ベストアンサー1
let dictionary = [
"A" : [1, 2],
"Z" : [3, 4],
"D" : [5, 6]
]
let sortedKeys = Array(dictionary.keys).sorted(<) // ["A", "D", "Z"]
編集:
上記のコードからのソートされた配列にはキーのみが含まれており、値は元の辞書から取得する必要があります。ただし、は(キー、値) ペア'Dictionary'
でもあり'CollectionType'
、次のようにグローバル'sorted'
関数を使用してキーと値の両方を含むソートされた配列を取得できます。
let sortedKeysAndValues = sorted(dictionary) { $0.0 < $1.0 }
print(sortedKeysAndValues) // [(A, [1, 2]), (D, [5, 6]), (Z, [3, 4])]
編集2:毎月変更されるSwift構文は現在、
let sortedKeys = Array(dictionary.keys).sort(<) // ["A", "D", "Z"]
グローバルsorted
は非推奨です。