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

Swift базовый курс

Операторы Swift

Swift управление потоком

Swift коллекции

Swift функция

Swift продвинутый

Словари (Dictionary) в Swift

В этом руководстве вы узнаете, что такое словарь, как его создавать и какие операции с ним наиболее распространены.

В предыдущейSwift массивВ этой статье мы изучили, как хранить несколько значений в переменных/константах. В этой статье мы обсудим, как хранить данные/значения в виде пар ключ: значение.

Что такое словарь?

Словарь — это контейнер, который может хранить несколько данных в виде пар ключ: значение, неорядочными.

Каждое значение связано с уникальным ключом и хранится в несортированном списке какСборникиЭто означает, что вы получаете элементы в порядке, отличном от порядка, в котором вы определяете элементы в словаре.

Когда вам нужно найти значение с определенным идентификатором в集合е, вы можете использовать словарь вместо массива. Предположим, вы хотите найти столицу этой страны. В этом случае вы создадите словарь с парой ключ: значение, включающей страну и город столицу. Теперь вы можете получить значение: столица, ищя ключ: страна в集合е.

Кратко говоря, вы сопоставляете ключ с значением. В примере выше мы сопоставили страну с ее столицей.

Как声明 словарь в Swift?

Вы можете создать пустой словарь, указав тип данных key: value в квадратных скобках [].

Пример 1: Указание пустого словаря

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

При выполнении этого программы, вывод будет:

[:]
или

Вы также можете определить пустой словарь следующим образом:

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

В上面 приведенной программе мы объявили константу emptyDic типа dictionary с ключами типа Int и значениями типа String, и инициализировали ее значением 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]

В上面的 программе мы объявили словарь, но не определили его тип явно, а初始化ировали его с помощью некоторых элементов по умолчанию.

Элементы расположены в парах ключ: значение, где тип ключа String, а тип значения Int. Поскольку словарь не является упорядоченным списком, print(someDic) выводит значения в порядке, отличный от порядка их определения.

Пример 3: создание словаря из двух массивов

Мы также можем создать словарь из массива.

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:) и создать новый словарь. Поэтому print(NewDictionary) выводит новый словарь, содержащий элементы из двух массивов.

Как получить доступ к элементам словаря в 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"])

При выполнении этого программы, вывод будет:

Optional(1)
Optional(8)

Вы также можете использовать цикл for-in для доступа к элементам словаря.

Пример 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":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
someDictionary["Japan"] = "Tokyo"
print(someDictionary)

При выполнении этого программы, вывод будет:

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

В上面的 примере мы использовали синтаксис индекса для создания нового ключ-значение "Japan": "Tokyo" в данном словаре.

Вы также можете использовать синтаксис индекса для изменения значения, связанного с определенным ключом:

Пример 7: Изменение элементов словаря

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
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((ключ: "China", значение: "Beijing"))

3.count - возвращает общее количество элементов словаря

Этот параметр возвращает общее количество элементов (ключей/значений) в словаре.

Пример 10: Как работает счетчик?

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

При выполнении этого программы, вывод будет:

3

4. атрибут keys - возвращает все ключи из словаря

Этот параметр возвращает все ключи из словаря.

Пример 11: Как работает keys?

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let dictKeys = Array(someDictionary.keys)
print(dictKeys)

При выполнении этого программы, вывод будет:

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

Таким же образом, вы можете использовать  values параметр для получения всех значений из словаря.

5. removeValue

Эта функция используется для удаления и возврата значения из словаря по указанному ключу. Эти два значения ключей/значений будут удалены из словаря.

Пример 12: Как работает removeValue()?

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val = someDictionary.removeValue(forKey: "Nepal")
print(val)
print(someDictionary)

При выполнении этого программы, вывод будет:

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

Таким же образом, вы можете использовать removeAll Функция очищает словарь.

Внимание

1.При доступе к элементам словаря с использованием синтаксиса индексации в Swift, вам необходимо убедиться, что ключ находится в индексе,否则 вы получитеnilЗначение. Давайте посмотрим на пример:

Пример 13: Ключ должен существовать

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val = someDictionary["Япония"]
print(val)

При выполнении этого программы, вывод будет:

nil

В указанном выше коде отсутствует ключ Япония . Поэтому, когда вы пытаетесь получить доступ к ключу «Япония » вы получите значение nil.

2.Таким же образом, ключи и значения в Swift различаются по регистру, поэтому вам необходимо убедиться, что вы используете правильный регистр ключей/значений. В противном случае, вы получите значение nil. Давайте посмотрим на пример:

Пример 14: Различие между ключами по регистру

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val = someDictionary["nepal"]
print(val)

При выполнении этого программы, вывод будет:

nil

В указанном выше коде отсутствует ключ «nepal». Поэтому, когда вы пытаетесь получить доступ к ключу «nepal», вы получите значение nil.

3.Если значение ключа не существует, то还有一种 способ предоставить значение по умолчанию. Давайте посмотрим на пример:

Пример 12: Значение по умолчанию для не существующего ключа

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val = someDictionary["nepal", default:"Not Found"]
print(val)

При выполнении этого программы, вывод будет:

Не найдено

В aforementioned программе, когда мы доступаемся до словаря, мы указываем значение по умолчанию в параметре по умолчанию. Если значение ключа не существует, то возвращается значение по умолчанию,否则 возвращается это значение

В нашем примере, ключ"nepal"Не существует, поэтому программа возвращает значение по умолчанию: Не найдено.