キーで辞書を並べ替える 質問する

キーで辞書を並べ替える 質問する

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は非推奨です。

おすすめ記事