English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift 字典(Dictionary)

このチュートリアルでは、辞書とは何か、辞書の作成方法、および辞書内の一般的な操作について学びます。

前回のSwift 配列この記事では、変数/定数には複数の値が保存されます。この記事では、データをどうやって/値はキー値対として保存されます。

辞書とは何ですか?

辞書は、無序列表として複数のデータをキー値対として保存できるコンテナです。

各値はユニークなキーに関連付けられ、データは無序列表中として保存されます。集合つまり、あなたが辞書内で定義したプロジェクトの順序とは異なる順序で要素を取得します。

特定の識別子を持つ値を集合内で検索する必要がある場合、配列ではなく辞書を使用します。例えば、この国の首都を検索したいとします。この場合、国と首都をキー値対を持つ辞書を作成します。今や、キー「国」を検索することで、集合から値「首都」を取得できます。

簡単に言えば、キーと値を組み合わせます。上の例では、国と首都を組み合わせます。

Swiftで辞書を宣言する方法はどうですか?

あなたは、方括号[ ]内でkey:valueデータタイプを指定することで、空の辞書を作成することができます。

例1:空の辞書を宣言する

let emptyDic:[Int:String] = [:]
print(emptyDic)

このプログラムを実行すると、出力は以下のようになります:

[:]
または

空の辞書を以下のように定義することもできます:

let emptyDic:Dictionary<Int, String> = [:]
print(emptyDic)

上記のプログラムでは、Int型のkeyとString型のvalueを持つdictionary型の定数emptyDicを宣言し、0値で初期化しました。

または

Swiftは型推論言語であるため、データ型を指定せずに直接辞書を作成することもできますが、コンパイラがそれを推論するためにいくつかの値を使って初期化する必要があります:

例2:特定の値を持つ辞書を宣言する

let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9]
print(someDic)

このプログラムを実行すると、出力は以下のようになります:

["b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, "h": 8]

上記のプログラムでは、辞書を宣言しましたが、明示的に型を定義せずに、いくつかのデフォルトの要素を使って初期化しました。

要素はkey:value対に配置されており、keyの型はString、valueの型はIntです。辞書は無序列表であるため、print(someDic)は定義された順序とは異なる順序で値を出力します。

例3:2つの配列から辞書を作成する

配列を使って辞書を作成することもできます。

let customKeys = ["Facebook", "Google", "Amazon"]
let customValues = ["Mark", "Larry", "Jeff"]
let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues))
print(newDictionary)

このプログラムを実行すると、出力は以下のようになります:

["Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark"]

上記のプログラムでは、zip(customKeys,customValues)が新しいタプルシーケンスを作成し、各要素がcustomKeysとcustomValuesからの値を表します。

今では、このシーケンスをDictionary(Unique eKeysWithValues:)の初期値設定項に渡し、新しいDictionaryを作成できます。したがって、print(NewDictionary)は新しいDictionaryを输出します。このDictionaryには、2つの配列の要素が含まれています。

Swiftで辞書要素にどうアクセスするか?

作为数组,可以使用下标语法访问字典的元素。您需要在字典名称后面的方括号中包含要访问的值的键。

例4辞書として、インデックス構文を使用して辞書の要素にアクセスできます。アクセスしたい値のキーを辞書名の後に括弧で囲む必要があります。

let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9]
:辞書の要素にアクセスする
print(someDic["a"])

このプログラムを実行すると、出力は以下のようになります:

print(someDic["h"])1Optional(
print(someDic["h"])8Optional(

)-forでループで辞書の要素にアクセスすることもできます。

例5:forでループで辞書の要素にアクセスする。-inループで辞書の要素にアクセスする

let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9]
for (key,value) in someDic {
    print("key:\(key) value:\(value)")
}

このプログラムを実行すると、出力は以下のようになります:

key:b value:2
key:a value:1
key:i value:9
key:c value:3
key:e value:5
key:f value:6
key:g value:7

Swiftで辞書の要素をどうやって変更しますか?

辞書にインデックス構文を使用して追加できる要素。キーを含めなければなりません。 新しいキー インデックスとして使用し、Dictionary 型に新しい値を割り当てます。

例6:辞書に要素を設定する

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
someDictionary["Japan"] = "Tokyo"
print(someDictionary)

このプログラムを実行すると、出力は以下のようになります:

["Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu"]

上記の例では、インデックス構文を使用して新しいキー値ペア "Japan": "Tokyo" を辞書に作成しました。

特定のキーに関連付けられた値を変更するために、以下のようにインデックス構文を使用できます:

例7:辞書の要素を変更する

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
someDictionary["Nepal"] = "KATHMANDU"
print(someDictionary)

このプログラムを実行すると、出力は以下のようになります:

["China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU"]

辞書の内蔵関数と属性

1. isEmpty 属性 - 辞書が空かどうかを判断する

この属性は辞書が空かどうかを決定します。辞書に値が含まれていない場合、true を返し、それ以外の場合は false を返します。

例8:isEmpty はどのように動作しますか?

let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
print(someDictionary.isEmpty)

このプログラムを実行すると、出力は以下のようになります:

false

2.first 属性 - 辞書の最初の要素を返します

この属性は、辞書の最初の要素にアクセスするために使用されます。

例9:最初はどのように動作しますか?

let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
print(someDictionary.first)

このプログラムを実行すると、出力は以下のようになります:

Optional((key: "China", value: "Beijing"))

3.count - ディクショナリの要素数を返します

この属性は、ディクショナリの要素数(キー値対)を返します。

例10:カウントはどのように動作しますか?

let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
print(someDictionary.count)

このプログラムを実行すると、出力は以下のようになります:

3

4.keys属性 - ディクショナリ中のすべてのキーを返します

この属性は、ディクショナリのすべてのキーを返します。

例11:keysはどのように動作しますか?

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
let dictKeys = Array(someDictionary.keys)
print(dictKeys)

このプログラムを実行すると、出力は以下のようになります:

["China", "India", "Nepal"]

同様に、以下を使用することもできます  values 属性を使用して、ディクショナリのすべての値を取得します。

5. removeValue

この関数は、指定されたキーで指定された値をディクショナリから削除し、返します。これらのキー値対はすべてディクショナリから削除されます。

例12:removeValue()はどのように動作しますか?

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
let val = someDictionary.removeValue(forKey: "Nepal")
print(val)
print(someDictionary)

このプログラムを実行すると、出力は以下のようになります:

Optional("Kathmandu")
["India": "NewDelhi", "China": "Beijing"]

同様に、以下を使用することもできます removeAll 関数でディクショナリをクリアします。

注意事項

1.Swiftで下書き構文を使用してディクショナリの要素にアクセスする際には、キーがインデックスに存在することを確認する必要があります。それでない場合、nil値が取得されます。nil値です。例を確認してみましょう:

例13:キーは存在する必要があります

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
let val = someDictionary["Japan"]
print(val)

このプログラムを実行すると、出力は以下のようになります:

nil

上記のプログラムでは、キーがありません。 Japan 。したがって、キー「Japan 」時、nil値が取得されます。

2.同様に、Swiftではキー値は大文字小文字を区別するため、正しい大文字小文字のキーを使用することを確認する必要があります。/値です。それでない場合、nil値が取得されます。例を確認してみましょう:

例14:キーは大文字小文字を区別します

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
let val = someDictionary["nepal"]
print(val)

このプログラムを実行すると、出力は以下のようになります:

nil

以上のプログラムでは、キー「nepal」がありません。したがって、キー「nepal」にアクセスしようとすると、nil値が取得されます。

3.指定されたキーの値が存在しない場合、デフォルト値を提供するもう一つの方法があります。以下の例で見てみましょう:

例12:キーが存在しない場合のデフォルト値

var someDictionary = ["Nepal":"カトマンズ", "China":"北京", "India":"ニューデリー"]
let val  = someDictionary["nepal", default:"Not Found"]
print(val)

このプログラムを実行すると、出力は以下のようになります:

Not Found

上記のプログラムでは、ディクショナリにアクセスする際にデフォルト引数としてデフォルト値を指定しました。キーの値が存在しない場合、デフォルト値が返され、それ以外の場合、その値が返されます

私たちの例では、キー“ネパール”存在しないため、プログラムはデフォルト値を返します: Not Found