LoginSignup
5
3

swift5でdictionaryをソートする

Last updated at Posted at 2020-06-25

初めに

今回はdictionary型の変数をソートする方法を展開します

dictionaryについて

此奴はハッシュテーブルな為、素早くキー検索ができるといういい点がありますが、格納順序は保証してくれるものではありません。
いいたいことは以下のことを指しています。
何もしないで抽出

test.swift
let testDict:[String:String] = ["01":"msTest","02":"mrTest","03":"Test"]
for (key, val) in testDict {
    println("key:\(key)\n value:\(val)")
}

出力結果

key:02
value:mrTest
key:01
value:msTest
key:03
value:Test

こんな風にぐちゃぐちゃに辞書に格納されてしまいます。

今回の議題の解決策

順番を保証してくれるデータ型などはありますが、抽出の方法が違かったりと多々問題が出てくるので、dictionaryを手っ取り早くソートして順番通り表示します

test.swift
let testDict:[String:String] = ["01":"msTest","02":"mrTest","03":"Test"]
//昇順でソート
let sortData = testDict.sorted { $0.0 < $1.0 } .map { $0 }
for (key, val) in sortData {
    println("key:\(key)\n value:\(val)")
}

出力結果

key:01
value:msTest
key:02
value:mrTest
key:03
value:Test

終わり

このように一文追加することでソートされます。
昇順で今回は例に出しましたが、もちろん降順でもソート可能です!
言語が保証してくれない物を無理やりソートするより、保証している物を使った方が楽ですが、dictionaryは扱いやすいし早いしなかなか捨てがたい物ではありますよね!
この記事がどなたかの助けになることを願っております。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3