【Swift入門】Dictionaryの要素を更新・追加・削除する方法

Swiftには配列に似たデータ形式のDictionary(ディクショナリ)があります。

この記事ではDictionaryについて、

・Dictionaryとは
・Dictionaryを作成する方法

などの基本的な解説から、

・Dictionaryの要素を追加する方法
・Dictionaryの要素を更新する方法
・Dictionaryの要素をを削除する方法

などの応用的な使い方についても解説していきます。

ここでは、Dictionaryの基本から追加・更新・削除について詳しく解説していきます!

※この記事ではSwift3.1を使用しています。

目次

Dictionaryとは

Dictionary(ディクショナリ)とはキーと値をセットにした配列のようなものです。

例えば、Dictionaryでは、

「名前 : “山田”」「年齢 : “23”」「性別 : “男”」

のようにキーと値をセットで作成します。

キーに紐づく値を参照できるため、ディクショナリ=辞書と呼びます。

Dictionaryは以下のように宣言します。

Dictionaryの宣言(型指定あり):

var 変数名:Dictionary<String,String> =  [key1 : value1, key2 : value2, key3 : value3, …]

また、以下のように型指定をしない場合はkeyとvalueにそれぞれint型やString型を混在して記述することができます。

Dictionaryの宣言(型指定なし):

var 変数名 = [key1 : value1, key2 : value2, key3 : value3, …]

注意点:
DictionaryはKeyの値を重複することはできません。valueは重複可能です。
配列と同様に変数(var)を指定すると要素の変更が可能で、定数(let)の場合は要素の変更はできません。

Dictionaryの基本的な使い方

ここではDictionaryの基本的な作成方法を見ていきましょう!

Dictionaryの作成

以下にDictionaryを作成する基本的な方法を紹介します。

サンプルプログラム1(型指定なし):

let fruits = 
["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450]

for (key,value) in fruits {
    print("\(key)は\(value)円です。")
}

実行結果:

りんごは100円です。
オレンジは80円です。
メロンは700円です。
バナナは150円です。
パイナップルは450円です。

サンプルプログラム2(型指定あり):

let fruits:Dictionary<String,Int> = 
["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450]

for (key,value) in fruits {
    print("\(key)は\(value)円です。")
}

実行結果:

りんごは100円です。
オレンジは80円です。
メロンは700円です。
バナナは150円です。
パイナップルは450円です。

以下のように指定した型以外の型を指定するとエラーとなります。

サンプルプログラム3(失敗例):

let fruits:Dictionary<String,String> = 
["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450]

for (key,value) in fruits {
    print("\(key)は\(value)円です。")
}

実行結果:

error: cannot convert value of type 'Int' to expected dictionary value type 'String'

空のDictionaryを作成する。

Dictionaryを定義してあとから値を追加したい場合は、とりあえず空のDictionaryを作成しておくことができます。

空のDictionaryは以下のように作成します。

//型指定
var test1:[String:String] = [:] 

Dictionaryを追加・更新する

Dictionaryに要素を追加するには、updateValueメソッドを使用します。

書き方:

配列名. updateValue(値, forKey: key)

引数:
第一引数にはDictionaryで追加する値を指定します。
第二引数のforKey:の後にはキーを指定します。

キーが既に登録されていた場合は値が更新されます。

返り値:
追加前のDictionaryを返します。

以下にupdateValueを使用してDictionaryの要素を追加する方法を紹介します。

サンプルプログラム1:

var fruits = 
["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450]

fruits.updateValue(300, forKey: "いちご")
fruits.updateValue(130, forKey: "りんご")

for (key,value) in fruits {
    print("\(key)は\(value)円です。")
}

実行結果:

いちごは300円です。
りんごは130円です。
オレンジは80円です。
メロンは700円です。
バナナは150円です。
パイナップルは450円です。

このサンプルプログラムではupdateValueでキーに”いちご”を指定し、値に300を指定してDictionaryに要素を追加しています。

また、キーに指定した”りんご”は既に存在するので、値のみ更新されます。

要素を追加するには「配列名[key] = 値」の書き方で追加することもできます。

updateValueメソッドでは引数がキーと値の指定方法が逆なので、こちらの書き方のほうが直感的に操作できます。

サンプルプログラム2:

var fruits = 
["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450]

fruits["いちご"] = 300
fruits["りんご"] = 130

for (key,value) in fruits {
    print("\(key)は\(value)円です。")
}

実行結果:

いちごは300円です。
りんごは130円です。
オレンジは80円です。
メロンは700円です。
バナナは150円です。
パイナップルは450円です。

Dictionaryを削除する

Dictionaryの指定した要素を削除するには、removeValueメソッドを使用します。

書き方:

配列名.removeValue(forKey:key)

引数:
引数には削除する要素のkeyを指定します。

返り値:
追加前のDictionaryを返します。

以下にremoveValueを指定してDictionaryを要素を削除する方法を紹介します。

サンプルプログラム:

var fruits = 
["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450]

//要素の削除
fruits.removeValue(forKey:"りんご")

for (key,value) in fruits {
    print("\(key)は\(value)円です。")
}
バナナは150円です。
オレンジは80円です。
メロンは700円です。
パイナップルは450円です。

まとめ

ここではDictionary(ディクショナリ)について、

・Dictionaryとは
・Dictionaryを作成する方法
・Dictionaryの要素を追加する方法
・Dictionaryの要素を更新する方法
・Dictionaryの要素をを削除する方法

などについて解説しました。

Dictionaryは配列と同じくよく使われるデータ形式ですので、使い方はしっかりと覚えておきましょう!

もしDictionaryの使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次