Selles õpetuses saate teada, mis on sõnastik, sõnastiku loomise ja mõned levinumad toimingud sõnastikus.
Eelmises Swift Arraysi artiklis õppisime, kuidas saame muutuja / konstandi hulka salvestada mitu väärtust. Selles artiklis arutleme, kuidas saaksime andmeid / väärtusi põhiväärtuste paaridena salvestada.
Mis on sõnastik?
Sõnastik on lihtsalt konteiner, mis mahutab mitut teavet võtme-väärtuse paarina järjestamata kujul.
Iga väärtus on seotud ainulaadse võtmega ja salvestab andmed alates komplektidest järjestamata loendisse, st te ei saa elemente samas järjekorras, kui määratlesite sõnastikus olevad üksused.
Massiivi asemel võite kasutada sõnastikku, kui peate kollektsiooni mõne identifikaatoriga väärtust otsima. Oletame, et võiksite otsida riigi pealinnast. Sellisel juhul loote sõnastiku, kus on peamine riik ja väärtuslik pealinn. Nüüd saate kollektsioonist pealinna, otsides võtmeriiki.
Lihtsamalt öeldes ühendate võtme väärtusega. Ülaltoodud näites ühendasime riigi oma pealinnaga.
Kuidas kuulutada Swiftis sõnastik?
Tühja sõnastiku saate luua, täpsustades key:value
nurksulgudes andmete tüübi ()
.
Näide 1: tühja sõnaraamatu deklareerimine
let emptyDic:(Int:String) = (:) print(emptyDic)
Programmi käivitamisel on väljund järgmine:
(:)
VÕI
Tühja sõnastiku saate määratleda ka järgmiselt:
let emptyDic:Dictionary = (:) print(emptyDic)
Eespool nimetatud programmis oleme kuulutanud tüübi Int
ja tüübi väärtusega võtme konstantse tühiDic of type sõnastiku String
ja lähtestanud selle 0 väärtusega.
VÕI
Kuna Swift on tüübi järelduskeel, saate sõnastiku luua ka otse ilma andmetüüpi määramata, kuid peate initsialiseerima mõne väärtusega, et kompilaator saaks selle tüübi järeldada järgmiselt:
Näide 2: Sõnaraamatu deklareerimine mõne väärtusega
let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic)
Programmi käivitamisel on väljund järgmine:
("b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, " h ": 8)
Ülaltoodud programmis oleme deklareerinud sõnaraamatu, ilma et oleksime tüüpi selgesõnaliselt määranud, vaid initsialiseerinud mõne vaikelemendiga.
Element on võtmes: väärtuspaar, kus võti on tüüpi String
ja väärtus on Int
tüüpi. Kuna sõnastik on korrastamata loend, print(someDic)
väljastab väärtused määratletud erinevas järjekorras.
Näide 3: sõnastiku loomine kahest massiivist
Massiivide abil saame luua ka sõnaraamatu.
let customKeys = ("Facebook", "Google", "Amazon") let customValues = ("Mark", "Larry", "Jeff") let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary)
Programmi käivitamisel on väljund järgmine:
("Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark")
Ülaltoodud programmis zip(customKeys,customValues)
loob uue duplikaadi järjestuse, kus iga element esindab väärtust customKeys ja customValues. ZIP-i toimimise kohta lisateabe saamiseks külastage lehte Swit zip.
Nüüd saame selle jada Dictionary(uniqueKeysWithValues:)
lähtestajale edastada ja luua uue sõnastiku. Seetõttu print(newDictionary)
väljastab uue sõnastiku kahe massiivi elementidega.
Kuidas pääseda Swifti sõnaraamatu elementidele juurde
Massiividena pääsete juurde sõnaraamatu elementidele, kasutades alaindeksite süntaksit. Peate sisestama nurksulgudes oleva väärtuse võtme kohe pärast sõnastiku nime.
Näide 4: Juurdepääs sõnaraamatu elementidele
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"))
Programmi käivitamisel on väljund järgmine:
Valikuline (1) Valikuline (8)
Sõnaraamatu elementidele pääseb juurde ka sisselülitamise tsüklite abil.
Näide 5: Juurdepääs sisselülituse tsükliga sõnaraamatu elementidele
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)") )
Programmi käivitamisel on väljund järgmine:
võti: b väärtus: 2 võti: väärtus: 1 võti: i väärtus: 9 võti: c väärtus: 3 võti: e väärtus: 5 võti: f väärtus: 6 võti: g väärtus: 7
Kuidas Swiftis sõnastikuelemente muuta?
Sõnaraamatusse saate lisada elementide süntaksit kasutades elemente. Peate lisama alaindeksiks uue võtme ja määrama uue tüübi väärtuse alates sõnastikust.
Näide 6: elementide seadistamine sõnastikus
var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Japan") = "Tokyo" print(someDictionary)
Programmi käivitamisel on väljund järgmine:
("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
Eespool nimetatud programmis oleme sõnastikule juurdepääsu ajal määranud vaikeparameetris väärtuse Ei leitud . Kui võtme väärtust pole olemas, tagastatakse vaikeväärtus, vastasel juhul tagastatakse väärtus.
Meie puhul pole võtit "nepal" olemas, nii et programm tagastab Not Found .