Урок 9. Словари

1 Ноября 2022

Словарь – это тип коллекции, представляющий собой набор пар ключ и значение [kay: value]

Давайте создадим один словарь с одной парой:

// Словарь с ключами целых чисел и строковыми значениями

               kay value

let integers = [1: “one”]

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

				
					// Словарь с ключами целых чисел и строковыми значениями
let integers = [1: "one", 2: "two", 3: "three"]
				
			

Таким образом через запятую вы можете добавлять любое количество пар. 

Давайте посмотрим на тип данного словаря (зажимаем клавишу option и кликаем по свойству, если окно не появляется то следует запустить playground):

Вы можете видеть что все ключи имеют тип Int, а все значения тип String. 

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

Первая пара будет иметь тип [String: String] тогда как вторая и третья тип [Int: String] это разные типы данных, поэтому компилятор нам выдает ошибку. 

Обратите внимание,  что ключи и значения могут быть любых типов. 

Давайте создадим еще пару словарей:

// Словарь с ключами-строками и значениями-целыми числами

               kay  value

let people = [“Anna”: 32, “Bob”: 45, “Charlie”: 60]

 

// Словарь с числовыми ключами типа Double и значениями числовых массивов

                      kay    value    kay    value    kay    value

let  dictOfnumbers = [1.0: [1, 2, 3], 2.5: [4, 5, 6], 3.14: [7, 8, 9]]

Ну и давайте посмотрим на тип данных каждого свойства:

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

Ключи в словаре должны быть уникальными, то есть ты не сможешь создать словарь с одинаковыми ключами

Давайте создадим словарь с одинаковыми ключами и значениями:

Компилятор выдает нам ошибку, потому что ключи должны быть уникальными, давайте исправим один из ключей:

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

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

Достать значение по ключу

Также как и в массиве, вы можете достать любое из значений словаря по его ключу:
				
					let people = ["Anna": 32, "Bob": 45, "Charlie": 60]

people["Anna"]
				
			

если мы посмотрим с права, то увидим значение 32

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

				
					let people = ["Anna": 32, "Bob": 45, "Charlie": 60]
let age = people["Anna"]
				
			

Свойство age будет иметь тип Int, потому что по факту мы взяли значение по ключу Anna и присвоили его новому свойству. 

Мы можем присвоить новое значение по выбранному ключу, только словарь нужно сделать изменяемым, то есть переменной: