Swift-辞書
スウィフト4 dictionaries同じタイプの値の順序付けられていないリストを格納するために使用されます。Swift 4は厳密なチェックを行っているため、誤って辞書に間違ったタイプを入力することはできません。
Swift 4辞書は、 key後で同じキーを介して参照および検索できる値を格納します。配列内のアイテムとは異なり、dictionary指定された順序はありません。あなたは使用することができますdictionary 識別子に基づいて値を検索する必要がある場合。
辞書キーは、制限なしで整数または文字列のいずれかですが、辞書内で一意である必要があります。
作成した辞書を変数に割り当てると、常に変更可能になります。つまり、アイテムを追加、削除、または変更することで辞書を変更できます。ただし、辞書を定数に割り当てると、その辞書は不変であり、そのサイズと内容を変更することはできません。
辞書の作成
次の初期化構文を使用して、特定のタイプの空の辞書を作成できます。
var someDict = [KeyType: ValueType]()
次の簡単な構文を使用して、キーがInt型で、関連する値が文字列になる空の辞書を作成できます。
var someDict = [Int: String]()
これは、与えられた値のセットから辞書を作成する例です-
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
シーケンスベースの初期化
Swift 4を使用すると、配列(キーと値のペア)から辞書を作成できます。
var cities = [“Delhi”,”Bangalore”,”Hyderabad”]
次の簡単な構文を使用して、キーがInt型で、関連する値が文字列になる空の辞書を作成できます。
var Distance = [2000,10, 620]
これは、与えられた値のセットから辞書を作成する例です-
let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))
上記のコード行は、Citiesをキー、DistanceをValue-として辞書を作成します。
フィルタリング
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")
キーと値のペアを削除する
使用できます 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 次の例に示すように、辞書内のキーと値のペアのセット全体を反復処理するループ。
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (index, keyValue) in someDict.enumerated() {
print("Dictionary key \(index) - Dictionary value \(keyValue)")
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
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 以下に示すように、辞書内のアイテムの数を調べるための辞書のプロパティ-
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
空のプロパティ
読み取り専用を使用できます empty 以下に示すように、辞書が空であるかどうかを確認するための辞書のプロパティ-
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