Dictionary<Key: Hashable, Value>


Dictionary (辞書) は、キー値のペアの順序のないコレクションを管理する汎用型です。辞書のキーはすべて、その鍵型 (Key) との互換性が必要です。同様に、辞書の値はすべて、その値の型 (Value) との互換性が必要です。


Dictionary の詳細については、コレクション型 を参照してください。


辞書の作成


init()


空の辞書を構築します。


宣言


init()



議論


このイニシャライザを使用して辞書を作成すると:


var emptyDictionary = Dictionary<String: Int>()



これはコンビニエンスの構文を使用するのと同様です:



var equivalentEmptyDictionary = [String: Int]()



init(minimumCapacity:)


キー値のペアの指定された数のための容量を少なくとも持つ空の辞書を構築します。


宣言


init(minimumCapacity: Int)



議論


minimumCapacity の値を指定することで、このイニシャライザを使用して辞書を作成することができます。


  1. var emptyDictionary = Dictionary<String, Int>(minimumCapacity: 2)
  2. // constructs an empty dictionary ready to contain at least two pairs of String keys and Int values


辞書によって予約される実際の容量は minimumCapacity に指定された値以上である 2 の最小累乗になることに注意してください。



辞書の要素にアクセスし変更する


subscript(key: Key)


角括弧のサブスクリプトを使用して、辞書内のキー値のペアを取得、設定、または削除します。


宣言


subscript(key: Key) -> Value?



議論


すべての辞書の個々の要素にアクセスするためサブスクリプトを使用してください。辞書のサブスクリプトから返された値の型は Value? であり、辞書の Value の基本になる型を持つ optional です:


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. let value = dictionary["two"]
  3. // value is an optional integer with an underlying value of 2


この例では、Value は、Int? 型であり Int ではない。辞書のサブスクリプトの戻り値が nil でない場合、照会し開封するには、optional の結合を使用して下さい:


  1. if let unwrappedValue = dictionary["three"] {
  2.         println("The integer value for \"three\" was: \(unwrappedValue)")
  3. }
  4. // prints "The integer value for "three" was: 3"


また、辞書内の既存のキーに関連付けられている値を変更するにはサブスクリプトを使用する事ができ、新しい値を追加し、または nil に設定することで、キーの値を削除できます。


  1. dictionary["three"] = 33
  2. // dictionary is now ["one": 1, "two": 2, "three": 33]
  3. dictionary["four"] = 4
  4. // dictionary is now ["one": 1, "two": 2, "three": 33, "four": 4]
  5. dictionary["three"] = nil
  6. // dictionary is now ["one": 1, "two": 2, "four": 4]


辞書内の値は、辞書が var キーワードで定義 (つまり、辞書が変更可能である場合) されている場合にのみ、サブスクリプトで、変更、追加、または削除できます:


  1. let constantDictionary = ["one": 1, "two": 2, "three": 3]
  2. constantDictionary["four"] = 4
  3. // Error: cannot mutate a constant dictionary


updateValue(_:forKey:)


与えられたキーの値を挿入または更新し、以前の値が存在していた場合、そのキーの値を返し、または前の値が存在しなかった場合は、nil を返します。


宣言


mutating func updateValue(value: Value, forKey key: Key) -> Value?



議論


サブスクリプトに代わるものとして、与えられたキーの値を挿入または更新するには、このメソッドを使用して下さい。このメソッドは、Value? 型の値を返しますが、これは辞書の Value の基本となる型を持つ optional です:


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. let previousValue = dictionary.updateValue(22, forKey: "two")
  3. // previousValue is an optional integer with an underlying value of 2


この例では、previousValueInt? 型であり、Int 型ではありません。それが nil でない場合、戻り値を照会し、開封するには、optional の結合を使用して下さい:


  1. if let unwrappedPreviousValue = dictionary.updateValue(33, forKey: "three") {
  2.         println("Replaced the previous value: \(unwrappedPreviousValue)")
  3. } else {
  4.         println("Added a new value")
  5. }
  6. // prints "Replaced the previous value: 3"


removeValueForKey(_:)


指定されたキーのキー値のペアを削除してその値を返す、またはそのキーの値が事前に存在しない場合は、nil を返します。


宣言


mutating func removeValueForKey(key: Key) -> Value?



議論


サブスクリプトを使用して nil 値を割り当てる代わりに、与えられたキーの値を削除するには、このメソッドを使用して下さい。このメソッドは、Value? 型の値を返しますが、これは辞書の Value の基本になる型を持つ optional です:


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. let previousValue = dictionary.removeValueForKey("two")
  3. // previousValue is an optional integer with an underlying value of 2


この例では、previousValueInt? 型であり、Int 型ではありません。それが nil でない場合、戻り値を照会し、開封するには、optional の結合を使用して下さい:


  1. if let unwrappedPreviousValue = dictionary.removeValueForKey("three") {
  2.         println("Removed the old value: \(unwrappedPreviousValue)")
  3. } else {
  4.         println("Didn't find a value for the given key to delete")
  5. }
  6. // prints "Removed the old value: 3"


辞書の中の値は、辞書が var キーワードで定義されている場合 (つまり、辞書が可変である場合) にのみ、このメソッドを用いて削除できます。


  1. let constantDictionary = ["one": 1, "two": 2, "three": 3]
  2. constantDictionary.removeValueForKey("four")
  3. // Error: cannot mutate a constant dictionary


removeAll(keepCapacity:)


辞書からすべてのキー値のペアを削除し、デフォルトでは基本となる補助記憶をクリアします。


宣言


mutating func removeAll(keepCapacity: Bool = default)



議論


辞書内のキー値のペアのすべてを削除するには、このメソッドを使用して下さい。


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. dictionary.removeAll()
  3. // dictionary is now an empty dictionary


特に指定しない限り、基本となる補助記憶がクリアされます。


辞書の中の値は、辞書が var キーワードで定義されている場合 (つまり、辞書が可変である場合) にのみ、このメソッドを用いて削除できます。


  1. let constantDictionary = ["one": 1, "two": 2, "three": 3]
  2. constantDictionary.removeAll()
  3. // Error: cannot mutate a constant dictionary


辞書を照会する


count


辞書内のキー値のペアの数を表す整数値 (読み取り専用)。


宣言


var count: Int { get }



議論


辞書内の要素の数を照会するために、この読み取り専用のプロパティを使用して下さい。


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. let elementCount = dictionary.count
  3. // elementCount is 3


keys


宣言


var keys: LazyBidirectionalCollection<MapCollectionView<[Key : Value], Key>> { get }



議論


辞書のキーの反復可能なコレクションを取得するには、この読み取り専用プロパティを使用して下さい。


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. for key in dictionary.keys {
  3.         println("Key: \(key)")
  4. }
  5. // prints:
  6. // Key: one
  7. // Key: three
  8. // Key: two


Array インスタンスを取る API で辞書のキーを使用するには、keys のプロパティを持つ新しい配列を初期化して下さい。


  1. let array = Array(dictionary.keys)
  2. // array is ["one", "three", "two"]


values


辞書の全ての値の順序付けていない反復可能なコレクションを返します (読み取り専用)。


宣言


var values: LazyBidirectionalCollection<MapCollectionView<[Key : Value], Value>> { get }



議論


辞書の値の反復可能なコレクションを取得するには、この読み取り専用プロパティを使用して下さい。


  1. var dictionary = ["one": 1, "two": 2, "three": 3]
  2. for value in dictionary.values {
  3.         println("Value: \(value)")
  4. }
  5. // prints:
  6. // Value: 1
  7. // Value: 3
  8. // Value: 2


Array インスタンスを取る API で辞書の値を使用するには、values プロパティで新しい配列を初期化して下さい:


  1. let array = Array(dictionary.values)
  2. // array is [1, 3, 2]


演算子


==


2つの辞書の内容が同じであるかどうかを示すブール値を返します。


宣言


func ==<Key: Equatable, Value: Equatable>(lhs: [Key: Value], rhs: [Key: Value]) -> Bool



議論


2つの辞書が全く同じキーと値を含んでいる場合は、true と評価されます:


  1. let dictionary1 = ["one": 1, "two": 2]
  2. var dictionary2 = ["one": 1]
  3. dictionary2["two"] = 2
  4. let result = dictionary1 == dictionary2
  5. // result is true


!=


2つの辞書の内容が同じではないかどうかを示すブール値を返します。


宣言


func !=<Key: Equatable, Value: Equatable>(lhs: [Key: Value], rhs: [Key: Value]) -> Bool



議論


2つの辞書が全く同じキーと値を含んでいない場合は、true と評価されます:


  1. let dictionary1 = ["one": 1, "two": 2]
  2. let dictionary2 = ["one": 1]
  3. let result = dictionary1 != dictionary2
  4. // result is true





前:配列


次:数値型
















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ