Суифт речник (с примери)

В този урок ще научите какво е речник, създаване на речник и някои често срещани операции в речника.

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

Какво е речник?

Речникът е просто контейнер, който може да съхранява множество данни като двойка ключ-стойност по неподреден начин.

Всяка стойност е свързана с уникален ключ и съхранява данни в неподреден списък от Набори, т.е. не получавате елементите в същия ред, както сте дефинирали елементите в речника.

Можете да използвате речник вместо масив, когато трябва да търсите стойност с някакъв идентификатор в колекцията. Да предположим, че може да искате да търсите в столицата на страната. В този случай ще създадете речник с ключова държава и стойност на столицата. Сега получавате столицата от колекцията, като търсите с ключовата държава.

С прости думи, сдвоявате ключ към стойност. В горния пример сдвоихме държава със столицата.

Как да декларирам речник в Swift?

Можете да създадете празен речник, като посочите типа key:valueданни в квадратни скоби ().

Пример 1: Деклариране на празен речник

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

Когато стартирате програмата, изходът ще бъде:

 (:)

ИЛИ

Можете също така да дефинирате празен речник, както по-долу:

 let emptyDic:Dictionary = (:) print(emptyDic) 

В горната програма декларирахме константа за речник emptyDic на типа с ключ от тип 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. За да научите повече за това как работи 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) 

Можете също така да получите достъп до елементи на речник, като използвате цикли за включване.

Пример 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?

Можете да добавяте елементи на в речника, като използвате синтаксиса на индекса. Трябва да включите нов ключ като индекс на индекса и да присвоите нова стойност на типа като на Речник.

Пример 6: Задаване на елементи в речник

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

Когато стартирате програмата, изходът ще бъде:

 („Япония“: „Токио“, „Китай“: „Пекин“, „Индия“: „НюДелхи“, „Непал“: „Катманду“)

В горния пример създадохме нова двойка ключ-стойност "Japan": "Tokyo"в дадения речник с помощта на синтаксиса на индекса.

Можете също да използвате синтаксиса на индекс, за да промените стойността, свързана с определен ключ, като:

Пример 7: Промяна на елементи на речник

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

Когато стартирате програмата, изходът ще бъде:

 („Китай“: „Пекин“, „Индия“: „NewDelhi“, „Непал“: „KATHMANDU“)

Някои полезни вградени функции и свойства на речника

1. isEmpty

Това свойство определя дали речникът е празен или не. Той се връща, trueако речникът не съдържа никаква стойност, в противен случай се връща 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 .

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