1. ホーム
  2. swift

[解決済み] 辞書をキーでソートする

2022-04-29 08:14:03

質問

Swiftで辞書をソートしたい。こんな辞書があります。

"A" => Array[]
"Z" => Array[]
"D" => Array[]

などです。のようにしたいのです。

"A" => Array[]
"D" => Array[]
"Z" => Array[]

などです。

SOで多くの解決策を試しましたが、私にはうまくいくものがありませんでした。XCode6 Beta 5を使用していますが、コンパイラーエラーが発生したり、例外が発生するものもあります。そこで、どなたか辞書整理の作業コピーを投稿していただけませんか。

解決方法は?

let dictionary = [
    "A" : [1, 2],
    "Z" : [3, 4],
    "D" : [5, 6]
]

let sortedKeys = Array(dictionary.keys).sorted(<) // ["A", "D", "Z"]

EDITです。

上記のコードでソートされた配列はキーだけを含んでおり、値は元の辞書から取得する必要があります。しかし 'Dictionary' はまた 'CollectionType' の (キー、値) のペアで、グローバルな 'sorted' 関数を使うと、このようにキーと値の両方を含むソートされた配列が得られます。

let sortedKeysAndValues = sorted(dictionary) { $0.0 < $1.0 }
println(sortedKeysAndValues) // [(A, [1, 2]), (D, [5, 6]), (Z, [3, 4])]

EDIT2です。 毎月変わるSwiftの構文では、現在、次のようなものが好まれます。

let sortedKeys = Array(dictionary.keys).sort(<) // ["A", "D", "Z"]

グローバルな sorted は非推奨です。