[Swift]「辞書」

iOSアプリ開発初心者向けに、辞書の使用方法や活用方法を解説します。

この記事では、辞書の作成方法や要素の追加・削除、要素へのアクセス方法、ソートやフィルタリング、検索と存在確認、便利なメソッドとプロパティまでを詳しく説明します。

目次

辞書の基礎

辞書キーバリューペアの集まりであり、特定のキーに対して対応する値を持つデータ構造です。例えば、名前と年齢のペアや都市と気温のペアなど、関連するデータを組み合わせる際に便利です。

辞書の作成

STEP
辞書の基本形

最初は、Dictionary(辞書)のKeyとValueが1つの基本形から解説します。

var dict = [ "Brewery" : 
    "a place where beer is made" ]
  • Brewery“ → Key: 辞書で調べられる項目
  • a place where beer is made”  → Value: Keyの意味、言葉の定義

データを抽出するためには、次のように記載します。

dict["Brewery"]
  • この結果、Key:”Brewery“に対応する、
  • Value:”a place where beer is made” を獲得できます。
STEP
辞書(Keyが複数)

Keyを複数持たせることもできます。

var dict = [ "Brewery" : 
    "a place where beer is made",
             "Bakery" : 
    "a place wher bread is made"]
STEP
辞書(ValueがString以外)

ValueにはString以外のデータ型を使用することもできます。

var dict : [String : Int] = 
    ["Angela" : 7712345678,
     "Philipp" : 7787654321]
STEP
空の辞書を作成

空の辞書を作成するには、以下のように空の辞書リテラルを使用します。

var emptyDictionary: [KeyType: ValueType] = [:]
  • KeyTypeValueType辞書のキーを表します。
  • 空の辞書を作成するには、辞書の変数を宣言し、空の辞書リテラルで初期化します。

要素の追加・削除・変更

STEP
要素の追加

まず、辞書に新しいキーバリューペアを追加する方法について説明します。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2]

dictionary["key3"] = value3

var dictionary: [KeyType: ValueType]

  • 辞書 dictionary を宣言しています。
  • KeyTypeValueType は、それぞれ辞書のキーと値の型を示すプレースホルダーです。
  • "key1": value1, "key2": value2 のように、キーとそれに対応する値を指定して、辞書の初期値を設定しています。

dictionary["key3"] = value3

  • dictionaryという辞書に新しいキーバリューペアを追加しています。
  • ["key3"] = value3のように、辞書のキーを指定して値を代入することで新しい要素を追加できます。
STEP
要素を削除

次に、辞書から要素を削除する方法について学びましょう。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

dictionary["key2"] = nil
  • dictionaryから指定したキーの要素を削除しています。
  • ["key2"] = nilのように、キーに対応する値をnilに代入することで要素を削除できます。
STEP
要素の値を変更

要素の値を変更する方法を見ていきましょう。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

dictionary["key2"] = newValue
  • dictionary という辞書の中のキー "key2" に関連する要素の値を newValue に変更しています。
  • dictionary["key2"] のように、辞書の名前にキーを指定して、新しい値を代入することで要素の値を変更できます。

要素へのアクセス方法・反復処理

STEP
特定のキーを使用して辞書の要素にアクセス

特定の要素にアクセスするには、その要素に対応するキーを使用します。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let value = dictionary["key2"]
  • dictionaryという辞書からキーが "key2" の要素にアクセスしています。
  • dictionary["key2"] のように、辞書の名前にキーを指定することで、対応する値を取得できます。
  • この場合、value にはキー "key2" に対応する値が格納されます。
STEP
キーが存在しない場合の安全なアクセス

また、辞書の要素にアクセスする際に、キーが存在しない場合の安全なアクセス方法もあります。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2]

if let value = dictionary["key3"] {
    // キーが存在する場合の処理
    // value を使用した操作
} else {
    // キーが存在しない場合の処理
}
  • キー "key3" の要素にアクセスしています。
  • キーが存在しない場合には if let 文を使用して安全なアクセスを行っています。
  • キーが存在する場合は、指定した処理が実行されます。
STEP
辞書の要素の反復処理

辞書の要素を反復処理する方法について学びましょう。辞書の要素を順番に処理するためには、ループを使用して各要素にアクセスします。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

for (key, value) in dictionary {
    // 各要素の処理
    print("Key: \(key), Value: \(value)")
}
  • dictionary という辞書の各要素をループで処理しています。
  • for-in ループを使用し、(key, value) のようなタプルで要素のキーと値を取得しています。
  • この例では、各要素のキーと値を表示していますが、実際の処理内容は要件に応じて変更できます。

要素のソート・フィルタリング・検索・存在確認

STEP
要素のソート

要素のソートについて学びましょう。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let sortedKeys = dictionary.keys.sorted()

for key in sortedKeys {
    let value = dictionary[key]
    // ソートされた順に要素を処理する
    print("Key: \(key), Value: \(value)")
}

let sortedKeys = dictionary.keys.sorted()

  1. 辞書 dictionary のキー(Keys)を取得し、それらのキーをソートsorted()して sortedKeys に代入しています。
  2. .keys は辞書内の全てのキーを配列として取得するプロパティです。

for key in sortedKeys {

  1. 最後に、ソートされたキーを順番に取り出して for-in ループで処理しています。
  2. ループ内で、取り出したキーを使って辞書 dictionary から対応する値を取得しています。
  3. そして、それらのキーと値を使用して要素を処理し、結果を表示しています。
STEP
要素のフィルタリング

要素のフィルタリングについて学びましょう。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let filteredDictionary = dictionary.filter { key, value in
    // フィルタリング条件を指定する
    return key.contains("2")
}
for (key, value) in filteredDictionary {
    // フィルタリングされた要素を処理する
    print("Key: \(key), Value: \(value)")
}

let filteredDictionary = dictionary.filter { key, value in

  1. filter メソッドを使って辞書をフィルタリングしています。このメソッドは、与えられた条件に基づいてコレクションの要素をフィルタリングします。
  2. クロージャ内の { key, value in ... } の部分では、各要素に対してフィルタリングの条件を指定しています。
  3. ここでは、キーに文字列 “2” が含まれているcontains要素を抽出するための条件を記述しています。

for (key, value) in filteredDictionary {

  1. 最後に、フィルタリングされた辞書の要素を for-in ループを使用して処理しています。ループ内では、各要素のキーと値を取得し、その内容を出力しています。
  2. つまり、このコードは与えられた辞書から “2” を含むキーを持つ要素を抽出して、それらの要素をループを通じて処理し、キーと値を表示するという処理を行います。
STEP
要素の検索

以下は、辞書内の要素をキーを使用して検索するコード例です。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

if let value = dictionary["key2"] {
    // キーを使用して要素を検索する
    print("Value: \(value)")
} else {
    // 要素が見つからなかった場合の処理
    print("Element not found")
}

if let value = dictionary["key2"] { ... } else { ... }

  1. dictionary["key2"]は、辞書内のキー "key2" に対応する値を取得する操作です。
  2. もしキーに対応する要素が存在する場合、その値がvalueとして代入されます。
  3. if let value = ... { ... } else { ... }は、もしdictionary["key2"]が値を返した場合(つまり、キーが辞書内に存在した場合)、以下のブロックが実行されます。
  4. もし値が見つからなかった場合は、elseブロックが実行されます。
STEP
要素の存在確認

以下は、指定したキーの要素が辞書に存在するかどうかを確認するコード例です。

var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

if dictionary.keys.contains("key2") {
    // キーの存在を確認する
    print("Element exists")
} else {
    // キーが存在しなかった場合の処理
    print("Element does not exist")
}

dictionary.keys.contains("key2")

  1. 辞書のキーの配列keys"key2" が含まれているかどうかkeys.containsを確認する式です。
  2. もし含まれていれば、if ブロック内の処理が実行されます。その結果、”Element exists” というメッセージが表示されます。
  3. もし "key2" が辞書のキーの配列に含まれていなければ、else ブロック内の処理が実行されます。その結果、”Element does not exist” というメッセージが表示されます。

辞書の応用

辞書のメソッド

まず、辞書のメソッドについて学びましょう。以下は、よく使用される辞書のメソッドのいくつかです。

STEP
辞書内の要素の数
var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let count = dictionary.count
print("Number of elements: \(count)")

count: 辞書内の要素の数を返します。

STEP
辞書が空であるかどうかを判定
var dictionary: [KeyType: ValueType] = [:]

if dictionary.isEmpty {
    print("Dictionary is empty")
} else {
    print("Dictionary is not empty")
}

isEmpty: 辞書が空であるかどうかを判定します。

STEP
指定したキーに対応する要素を辞書から削除
var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let removedValue = dictionary.removeValue(forKey: "key2")
print("Removed value: \(removedValue ?? "")")

removeValue(forKey:): 指定したキーに対応する要素を辞書から削除します。

nilを使って要素を削除することもできます。

dictionary["key2"] = nil
  • .removeValue メソッドは、指定したキーに対応する要素を削除し、削除された要素の値を返します
  • nil を使った削除方法は、指定したキーに対応する要素を nil に設定することで、要素自体を辞書から削除します。この方法では、削除された要素の値を取得することはできません

辞書のプロパティ

次に、辞書のプロパティについて学びましょう。以下は、よく使用される辞書のプロパティのいくつかです。

STEP
辞書内の全てのキーを含む配列を返す
var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let keys = dictionary.keys
print("Keys: \(keys)")

keys: 辞書内の全てのキーを含む配列を返します。

STEP
辞書内の全ての値を含む配列を返す
var dictionary: [KeyType: ValueType] 
  = ["key1": value1, "key2": value2, "key3": value3]

let values = dictionary.values
print("Values: \(values)")

values: 辞書内の全ての値を含む配列を返します。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次