【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の使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説