スウィフト – 辞書

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------


スウィフト – 辞書


ディクショナリは、文字列や数値をキーにして値を格納したり参照できる型です。

辞書キーは、整数または制限なしの文字列のいずれかですが、辞書内で一意である必要があります。

作成した辞書を変数に割り当てると、変数が常に変更可能になります。つまり、項目の追加、削除、または変更によって変更できます。

しかし、辞書に定数を代入すると、その辞書は不変であり、そのサイズと内容は変更できません。

辞書の作成


次のイニシャライザ構文を使用して、特定のタイプの空の辞書を作成できます。

var someDict = [KeyType: ValueType]()

キーがInt型で、関連付けられた値が文字列になる空のディクショナリを作成することも可能です。

var someDict = [Int: String]()

ここでは、与えられた値のセットから辞書を作成する例を示します。

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

シーケンスベースの初期化


Swift 4では、タプル(Key-Value Pairs)から辞書を作成できます。

var cities = [“tokyo”,”yokohama”,”chiba”]

キーがInt型で、関連付けられた値が文字列になる空のディクショナリを作成できます。

var Distance = [2000,10, 620]

ここでは、与えられた値のセットから辞書を作成する例を示します。

let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))

上記のコード行は、キーをCities、距離をDistanceとする辞書を作成します。

フィルタリング


Swift 4では、辞書から値をフィルタリングできます。

var closeCities = cityDistanceDict.filter { $0.value < 1000 }

上記のコードを実行すると、closeCities辞書が作成されます。

["Bangalore" : 10 , "Hyderabad" : 620]

辞書のグループ化


Swift 4では、辞書値のグループ化を作成できます。

var cities = ["Delhi","Bangalore","Hyderabad","Dehradun","Bihar"]

最初のアルファベットに従って辞書の値をグループ化することができます。

var GroupedCities = Dictionary(grouping: cities ) { $0.first! }

上記のコードの結果は、

["D" :["Delhi","Dehradun"], "B" : ["Bengaluru","Bihar"], "H" : ["Hyderabad"]]

辞書へのアクセス


サブスクリプト構文を使用して、検索する値のキーを次のように辞書名の直後の角かっこで渡して、辞書から値を取得することができます。

var someVar = someDict[key]

辞書から値を作成、初期化、およびアクセスするための次の例を確認してみましょう。

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someVar = someDict[1]

print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Value of key = 1 is Optional("One")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

辞書の変更


updateValue(forKey :)メソッドを使用すると、辞書の指定されたキーに既存の値を追加できます。このメソッドは、ディクショナリの値型のオプションの値を返します。ここに簡単な例があります –

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("New value of one", forKey: 1)
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

指定されたキーに新しい値を割り当てることによって、辞書の既存の要素を変更できます。

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict[1]
someDict[1] = "New value of one"
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Key-Valueペアを削除する


removeValueForKey()メソッドを使用すると、辞書からキーと値のペアを削除できます。このメソッドは、存在する場合はキーと値のペアを削除し、削除された値を返します。値が存在しない場合はnilを返します –

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

サブスクリプト構文を使用して、そのキーにnilという値を割り当てることで、辞書からキーと値のペアを削除することもできます。ここに簡単な例があります –

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

someDict[2] = nil

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

辞書の繰り返し


for-inループを使用して、次の例に示すように、Dictionary内のキーと値のペアのセット全体を反復処理することができます。

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (key, value) in someDict {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One

次の例に示すように、アイテムのインデックスを(キー、値)のペアとともに返すenumerate()関数を使用できます。

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")

配列に変換する


特定の辞書からキーと値のペアのリストを抽出して、キーと値の両方に別々の配列を作成することができます。ここに例があります –

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

print("Print Dictionary Keys")

for (key) in dictKeys {
   print("\(key)")
}
print("Print Dictionary Values")

for (value) in dictValues {
   print("\(value)")
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Print Dictionary Keys
2
3
1
Print Dictionary Values
Two
Three
One

countプロパティ


ディクショナリの読み取り専用countプロパティを使用して、以下に示すようにディクショナリ内の項目数を調べることができます。

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]

print("Total items in someDict1 = \(someDict1.count)")
print("Total items in someDict2 = \(someDict2.count)")

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Total items in someDict1 = 3
Total items in someDict2 = 2

空のプロパティ


以下に示すように、辞書の空の読み取り専用プロパティを使用して、辞書が空であるかどうかを調べることができます。

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()

print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")

上記のコードをコンパイルして実行すると、次の結果が生成されます。

someDict1 = false
someDict2 = false
someDict3 = true

前のページ 次のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。