У овом упутству ћете научити шта је речник, креирање речника и неке уобичајене операције у речнику.
У претходном чланку Свифт Арраис научили смо како можемо да чувамо више вредности у променљивој / константи. У овом чланку ћемо разговарати о томе како податке / вредности можемо чувати као парове кључних вредности.
Шта је речник?
Речник је једноставно контејнер који на неуређен начин може да садржи више података као пар кључ / вредност.
Свака вредност је повезана са јединственим кључем и чува податке на неуређеној листи од Сетс, тј. Не добијате елементе истим редоследом као што сте дефинисали ставке у речнику.
Можете користити речник уместо низа када треба да потражите вредност са неким идентификатором у колекцији. Претпоставимо да ћете можда желети да претражите главни град државе. У том случају ћете створити речник са кључном државом и главним градом. Сада главни град добијате из колекције претраживањем кључне државе.
Једноставно речено, упарите кључ са вредношћу. У горњем примеру смо упарили земљу са њеним главним градом.
Како се декларише речник у Свифту?
Можете створити празан речник наводећи 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
У горе наведеном програму одредили смо вредност Није пронађена у подразумеваном параметру током приступа речнику. Ако вредност не постоји за кључ, враћа се подразумевана вредност, у супротном се враћа вредност.
У нашем случају, кључ "непал" није присутан, па програм враћа Нот Фоунд .