Свифт Дицтионари (са примерима)

У овом упутству ћете научити шта је речник, креирање речника и неке уобичајене операције у речнику.

У претходном чланку Свифт Арраис научили смо како можемо да чувамо више вредности у променљивој / константи. У овом чланку ћемо разговарати о томе како податке / вредности можемо чувати као парове кључних вредности.

Шта је речник?

Речник је једноставно контејнер који на неуређен начин може да садржи више података као пар кључ / вредност.

Свака вредност је повезана са јединственим кључем и чува податке на неуређеној листи од Сетс, тј. Не добијате елементе истим редоследом као што сте дефинисали ставке у речнику.

Можете користити речник уместо низа када треба да потражите вредност са неким идентификатором у колекцији. Претпоставимо да ћете можда желети да претражите главни град државе. У том случају ћете створити речник са кључном државом и главним градом. Сада главни град добијате из колекције претраживањем кључне државе.

Једноставно речено, упарите кључ са вредношћу. У горњем примеру смо упарили земљу са њеним главним градом.

Како се декларише речник у Свифту?

Можете створити празан речник наводећи key:valueтип података у угластим заградама ().

Пример 1: Проглашавање празног речника

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

Када покренете програм, излаз ће бити:

 (:)

ИЛИ

Такође можете дефинисати празан речник као испод:

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

У горе наведеном програму прогласили смо константни речник емптиДиц типа са кључем типа Intи вредност типа Stringи иницијализовали га са 0 вредности.

ИЛИ

Будући да је Свифт језик закључивања типа, такође можете да креирате речник директно без навођења типа података, али мора да се иницијализује неким вредностима како би компајлер могао да закључи о његовом типу као:

Пример 2: Декларисање речника са неким вредностима

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic) 

Када покренете програм, излаз ће бити:

 ("б": 2, "а": 1, "и": 9, "ц": 3, "е": 5, "ф": 6, "г": 7, "д": 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) 

Када покренете програм, излаз ће бити:

 ("Амазон": "Јефф", "Гоогле": "Ларри", "Фацебоок": "Марк")

У горњем програму zip(customKeys,customValues)креира нову секвенцу корпица са сваким елементом који представља вредност из цустомКеис и цустомВалуес. Да бисте сазнали више о томе како зип ради, посетите Свит зип.

Сада ову секвенцу можемо проследити Dictionary(uniqueKeysWithValues:)иницијализатору и створити нови Речник. Стога, print(newDictionary)излази нови Речник са елементима из два низа.

Како приступити елементима речника у Свифту?

Као низови, елементима речника можете приступити користећи синтаксу индекса. Кључ вредности којој желите да приступите морате да уврстите у углате заграде одмах након назива речника.

Пример 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: Приступ елементима речника помоћу петље фор-ин

 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)") ) 

Када покренете програм, излаз ће бити:

 кључ: б вредност: 2 кључ: вредност: 1 кључ: и вредност: 9 кључ: ц вредност: 3 кључ: е вредност: 5 кључ: ф вредност: 6 кључ: г вредност: 7 

Како изменити елементе речника у Свифту?

Елементе језика можете додати у речник помоћу синтаксе индекса. Морате да укључите нови кључ као индекс индекса и доделите нову вредност типа као Речник.

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

У горе наведеном програму одредили смо вредност Није пронађена у подразумеваном параметру током приступа речнику. Ако вредност не постоји за кључ, враћа се подразумевана вредност, у супротном се враћа вредност.

У нашем случају, кључ "непал" није присутан, па програм враћа Нот Фоунд .

Занимљиви Чланци...