スウィフト辞書


Swift 辞書は、同じ型の順序付けされていないデータのコレクションを保存するために使用されます。Swift 辞書は要素の型を強制的に検出し、型が異なる場合はエラーを報告します。

Swift 辞書内の各値は一意のキーに関連付けられており、そのキーは辞書内の値データの識別子として機能します。

配列内のデータ項目とは異なり、辞書内のデータ項目には特定の順序がありません。識別子 (キー) を通じてデータにアクセスする必要がある場合、辞書を使用します。この方法は、現実世界で単語の意味を調べるために辞書を使用する方法とほぼ同じです。

Swift 辞書キーには型の制限がなく、整数または文字列を使用できますが、一意である必要があります。

辞書を作成して変数に代入すると、作成した辞書を変更できます。これは、辞書の作成後、辞書内の項目を追加、削除、または変更することで変更できることを意味します。辞書を定数に割り当てると、辞書は変更できなくなり、辞書のサイズも内容も変更できなくなります。


辞書の作成

次の構文を使用して、特定の型の空の辞書を作成できます:

var someDict =  [KeyType: ValueType]()

以下は、Int 型のキーと String 型の値を含む空の辞書を作成する簡単な構文です。

var someDict = [Int: String]()

以下 辞書のインスタンスを作成するには:

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

辞書へのアクセス

辞書のインデックスに従って配列の要素にアクセスできます。構文は次のとおりです:

var someVar = someDict[key]

その方法を学習できます次の例で辞書を作成、初期化し、アクセスします:

import Cocoa

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

var someVar = someDict[1]

print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

上記プログラムの実行の出力結果は次のとおりです:

key = 1 的值为 Optional("One")
key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")

辞書を変更します

追加するには updateValue(forKey:) を使用できます。または辞書の内容を更新します。キーが存在しない場合は値を追加し、存在する場合はキーに対応する値を変更します。 updateValue(_:forKey:) メソッドは、オプションの値を返します。例は次のとおりです。

import Cocoa

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

var oldVal = someDict.updateValue("One 新的值", forKey: 1)

var someVar = someDict[1]

print( "key = 1 旧的值 \(oldVal)" )
print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

上記のプログラムの実行の出力結果は次のとおりです。

key = 1 旧的值 Optional("One")
key = 1 的值为 Optional("One 新的值")
key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")

以下に示すように、キーを指定して辞書の値を変更することもできます。上記のプログラムの実行は次のとおりです:

import Cocoa

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

var oldVal = someDict[1]
someDict[1] = "One 新的值"
var someVar = someDict[1]

print( "key = 1 旧的值 \(oldVal)" )
print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

キーと値のペアの削除

removeValueForKey()

メソッドを使用して、辞書のキーと値のペアを削除できます。このメソッドは、キーが存在する場合は削除された値を返し、キーが存在しない場合は nil を返します。例は次のとおりです。

key = 1 旧的值 Optional("One")
key = 1 的值为 Optional("One 新的值")
key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")
上記のプログラムの実行の出力結果は次のとおりです。

import Cocoa

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

var removedValue = someDict.removeValueForKey(2)

print( "key = 1 的值为 \(someDict[1])" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

キーの値を nil に指定することで、キーと値 (キーと値) のペアを削除することもできます。例は次のとおりです。

key = 1 的值为 Optional("One")
key = 2 的值为 nil
key = 3 的值为 Optional("Three")

上記のプログラム実行出力は次のとおりです:

import Cocoa

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

someDict[2] = nil

print( "key = 1 的值为 \(someDict[1])" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

辞書の走査

for-in

ループを使用して、辞書内のキーと値のペアを走査できます。例は次のとおりです:

key = 1 的值为 Optional("One")
key = 2 的值为 nil
key = 3 的值为 Optional("Three")
上記のプログラムの実行の出力結果は次のとおりです:

import Cocoa

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

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

enumerate() メソッドを使用して辞書トラバーサルを実行することもでき、これにより辞書のインデックスと (キー、値) のペアが返されます。例は次のとおりです:

字典 key 2 -  字典 value Two
字典 key 3 -  字典 value Three
字典 key 1 -  字典 value One

上 プログラム実行の出力結果は次のとおりです:

import Cocoa

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

for (key, value) in someDict.enumerate() {
    print("字典 key \(key) -  字典 (key, value) 对 \(value)")
}

辞書を配列に変換

辞書のキーと値のペアを抽出し、独立した配列に変換できます。例は次のとおりです:

字典 key 0 -  字典 (key, value) 对 (2, "Two")
字典 key 1 -  字典 (key, value) 对 (3, "Three")
字典 key 2 -  字典 (key, value) 对 (1, "One")

上記のプログラムの実行の出力結果は次のとおりです:

import Cocoa

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

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

print("输出字典的键(key)")

for (key) in dictKeys {
    print("\(key)")
}

print("输出字典的值(value)")

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

count 属性

読み取り専用の count 属性を使用して、辞書内にキーと値のペアがいくつあるかを計算できます:

输出字典的键(key)
2
3
1
输出字典的值(value)
Two
Three
One

上記のプログラムの実行の出力結果は次のとおりです:

import Cocoa

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

print("someDict1 含有 \(someDict1.count) 个键值对")
print("someDict2 含有 \(someDict2.count) 个键值对")

isEmpty 属性

Y 渡すことができるのは、属性 isEmpty を読み取り、辞書が空かどうかを判断し、ブール値を返すことだけです:

someDict1 含有 3 个键值对
someDict2 含有 2 个键值对

上記のプログラム実行の出力結果は次のとおりです:

import Cocoa

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)")