Swift Dictionary (с примерами)

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

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

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

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

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

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

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

Как объявить словарь в Swift?

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

Пример 1: Объявление пустого словаря

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

Когда вы запустите программу, вывод будет:

 (:)

ИЛИ

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

 let emptyDic:Dictionary = (:) 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, « ч ": 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»: «Джефф», «Google»: «Ларри», «Facebook»: «Марк»)

В приведенной выше программе zip(customKeys,customValues)создается новая последовательность кортежей, каждый элемент которой представляет значение из customKeys и customValues. Чтобы узнать больше о том, как работает zip, посетите Swit zip.

Теперь мы можем передать эту последовательность Dictionary(uniqueKeysWithValues:)инициализатору и создать новый словарь. Следовательно, 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")) 

Когда вы запустите программу, вывод будет:

 Дополнительно (1) Дополнительно (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)") ) 

Когда вы запустите программу, вывод будет:

 ключ: значение b: 2 ключ: значение: 1 ключ: значение i: 9 ключ: значение c: 3 ключ: значение e: 5 ключ: значение f: 6 ключ: значение g: 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")

In the above example, we've created a new key-value pair "Japan": "Tokyo" in the given dictionary by using the subscript syntax.

You can also use subscript syntax to change the value associated with a particular key as:

Example 7: Changing elements of a dictionary

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Nepal") = "KATHMANDU" print(someDictionary) 

When you run the program, the output will be:

 ("China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU")

Some helpful built-in Dictionary functions & properties

1. isEmpty

This property determines if an dictionary is empty or not. It returns true if a dictionary does not contain any value otherwise returns false.

Example 8: How isEmpty works?

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

When you run the program, the output will be:

 false

2. first

This property is used to access the first element of a dictionary.

Example 9: How first works?

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

When you run the program, the output will be:

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

3. count

This property returns the total number of elements (key-value pair) in a dictionary.

Example 10: How count works?

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

When you run the program, the output will be:

 3

4. keys

This property returns all the keys inside the dictionary.

Example 11: How keys works?

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

When you run the program, the output will be:

 ("China", "India", "Nepal")

Similarly, you can use values to get all the values inside the dictionary.

5. removeValue

This function removes and returns the value specified with the key from the dictionary. Both key value pair will be removed from the dictionary.

Example 12: How removeValue() works?

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

When you run the program, the output will be:

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

Similarly, you can also use removeAll function to empty an dictionary.

Things to Remember

1. While using subscript syntax to access elements of an dictionary in Swift, you must be sure the key lies in the index otherwise you will get a nil value. Let's see this in example:

Example 13: Key must be present

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

When you run the program, the output will be:

 nil

In the above program, there is no key Japan. So when you try to access the value of the key "Japan", you will get a nil value.

2. Likewise, key-values are case-sensitive in Swift, so you must make sure the correct cased key/value is used. Otherwise, you will get a nil value. Let's see this in example:

Example 14: Keys are case-sensitive

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

When you run the program, the output will be:

 nil

In the above program, there is no key nepal. So when you try to access the value of the key "nepal", you will get a nil value.

3. There is also a way to provide a default value if the value for a given key does not exist. Let's see this in example:

Example 12: Default value for non-existent key

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

When you run the program, the output will be:

 Not Found

В приведенной выше программе мы указали значение Not Found в параметре по умолчанию при доступе к словарю. Если значение для ключа не существует, возвращается значение по умолчанию, в противном случае возвращается значение.

В нашем случае ключа nepal нет, поэтому программа возвращает Not Found .

Интересные статьи...