
今回は辞書型データについて書きたいと思います。
辞書型はDictionary(ディクショナリ)とも言います。
辞書も配列と同じで複数のデータを持つ事ができるデータ型です。
配列との違いについてですが、
配列はインデックス番号で呼び出したり、削除したりしていましたが、辞書型ではインデックス番号の代わりにkeyと言う名前で管理します。
なので辞書型は順序を持ちません。
早速ですが、例を見てみましょう。
var albumSales: Dictionary<String, Int> = ["First Love": 765, "B'z The Best Pleasure": 513, "REVIEW-BEST OF GLAY": 487]
var albumSales = ["First Love": 765, "B'z The Best Pleasure": 513, "REVIEW-BEST OF GLAY": 487]// 型推論で省略して書く事もできます。
print(albumSales)// 結果 ["REVIEW-BEST OF GLAY": 487, "B\'z The Best Pleasure": 513, "First Love": 765]
今回の例は、アルバムCD売り上げ枚数のTOP3を変数albumSalesに格納しました。
基本的な書き方は、
変数名: Dictionary<データ型1, データ型2> = [データ型1の値: データ型2の値]
このように書きます。
2行目のように型推論で書く事もできるので型推論で書いた方が楽そうですね。
少しややややこしいですが、データ型1の事をkey、データ型2の事をvalueと呼ぶ事が多いようです。
今回で言うとアルバムのタイトルがkeyになって売り上げ枚数がvalueと言う事になります。
3行目で変数albumSalesを出力していますが、結果を見てみると順番がバラバラですね。
辞書型は順序を持たないのでこのような結果になります。
var albumSales = ["First Love": 765, "B'z The Best Pleasure": 513, "REVIEW-BEST OF GLAY": 487]// 型推論で省略して書く事もできます。
print(albumSales["First Love"])// 結果 Optional(765)
print(albumSales["First Love"]!)// 結果 765
上記コードを見てみると3行目でFirst Loveの売り上げ枚数を出力しています。
出力するには変数名[key]でOKですが、、、
ここで4行目の結果を見てみると、なんかOptional(765)と言う結果が表示されています。
これは辞書型でキーを指定して呼び出す場合Optional 型で値が返ってくるからです。
なので5行目のように!を付けてアンラップして取り出す必要があります。
オプショナルについてはこちらの記事が詳しく書いてあるので参考にしてみて下さい。
var albumSales = ["First Love": 765, "B'z The Best Pleasure": 513, "REVIEW-BEST OF GLAY": 487]// 型推論
albumSales["B'z The Best Pleasure"] = 600 //値の上書き
albumSales["Distance"] = 447 //要素の追加
albumSales.removeValue(forKey: "First Love") //要素の削除
print(albumSales) //結果 ["REVIEW-BEST OF GLAY": 487, "B\'z The Best Pleasure": 600, "Distance": 447]
for (key, value) in albumSales {
print("「\(key)」 \(value)万枚" )
} //結果 ※順番はバラバラに返ってくる。
//B'z The Best Pleasure」 600万枚
//「Distance」 447万枚
//「REVIEW-BEST OF GLAY」 487万枚
3行目から6行目でそれぞれの処理をしています。
7行目の実行結果を見てみると、
“B’z The Best Pleasure”が600にかわり、”Distance”が追加され、”First Love”が削除されているのがわかると思います。
for文を使って一つずつ取り出したのが9行目です。
forの隣の(key, value)ですがここで、タプルを使いalbumSalesのkeyとvalueを代入しています。
急にタプルが出てきてややこしくなるので、辞書型をfor文で取り出す時はこうやって書くと覚えてしまって良いと思います。
辞書型は順番がないのでfor文を実行するたびに順番が変わって出力されます。
var albumSales = [String: Int]()
空の辞書を作る時はこのように書けばOKです。
僕の中では辞書はちょっと難しいなと感じています。
でもめちゃ使うので逃げずに向き合いたいと思います。
最後に、
CDが売れなくなって、サブスクで音楽を聴く時代になったので、このアルバムランキングはもう一生破られる事がないのでしょうね。
ありがとうございました。
コメントを残す