V tomto výučbe sa dozviete, čo je to slovník, vytvoríte slovník a niektoré bežné operácie v slovníku.
V predchádzajúcom článku o Swift Arrays sme sa dozvedeli, ako môžeme ukladať viac hodnôt do premennej / konštanty. V tomto článku budeme diskutovať o tom, ako môžeme ukladať údaje / hodnoty ako páry kľúč - hodnota.
Čo je to slovník?
Slovník je jednoducho kontajner, ktorý môže neusporiadaným spôsobom pojať viac údajov ako pár kľúč - hodnota.
Každá hodnota je priradená k jedinečnému kľúču a ukladá údaje do neusporiadaného zoznamu od Sety, tj. Nedostanete prvky v rovnakom poradí, v akom ste definovali položky v slovníku.
Slovník môžete použiť namiesto poľa, ak potrebujete vyhľadať hodnotu pomocou nejakého identifikátora v zbierke. Predpokladajme, že budete chcieť prehľadať hlavné mesto krajiny. V takom prípade vytvoríte slovník s kľúčovou krajinou a hodnotou hlavného mesta. Teraz získate hlavné mesto zo zbierky vyhľadaním kľúčovej krajiny.
Jednoducho povedané, spárujete kľúč s hodnotou. V uvedenom príklade sme spárovali krajinu s jej hlavným mestom.
Ako deklarovať slovník v Swifte?
Prázdny slovník môžete vytvoriť zadaním key:value
typu údajov v hranatých zátvorkách ()
.
Príklad 1: Vyhlásenie prázdneho slovníka
let emptyDic:(Int:String) = (:) print(emptyDic)
Po spustení programu bude výstup:
(:)
ALEBO
Môžete tiež definovať prázdny slovník, ako je uvedené nižšie:
let emptyDic:Dictionary = (:) print(emptyDic)
Vo vyššie uvedenom programe sme deklarovali konštantný emptyDic slovníka typu s kľúčom typu Int
a hodnoty typu String
a inicializovali sme ho 0 hodnotami.
ALEBO
Pretože Swift je jazyk na odvodenie typov, môžete tiež vytvoriť slovník priamo bez zadania dátového typu, ale musíte ho inicializovať pomocou niektorých hodnôt, aby kompilátor mohol odvodiť jeho typ ako:
Príklad 2: Deklarovanie slovníka s niektorými hodnotami
let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic)
Po spustení programu bude výstup:
("b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, " h ": 8)
Vo vyššie uvedenom programe sme deklarovali slovník bez explicitného definovania typu, ale inicializácie pomocou niektorých predvolených prvkov.
Element je v páre kľúč: hodnota, kde kľúč je typu String
a hodnota je Int
typu. Pretože slovník je neusporiadaný, zoznam print(someDic)
vydáva hodnoty v inom poradí, ako je definované.
Príklad 3: Vytvorenie slovníka z dvoch polí
Slovník môžeme vytvoriť aj pomocou polí.
let customKeys = ("Facebook", "Google", "Amazon") let customValues = ("Mark", "Larry", "Jeff") let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary)
Po spustení programu bude výstup:
(„Amazon“: „Jeff“, „Google“: „Larry“, „Facebook“: „Mark“)
Vo vyššie uvedenom programe sa zip(customKeys,customValues)
vytvorí nová sekvencia n-tice, pričom každý prvok predstavuje hodnotu z customKeys a customValues. Ak sa chcete dozvedieť viac o fungovaní zipsu, navštívte Swit zip.
Teraz môžeme túto postupnosť odovzdať Dictionary(uniqueKeysWithValues:)
inicializátoru a vytvoriť nový slovník. Preto print(newDictionary)
vydá nový slovník s prvkami z dvoch polí.
Ako získať prístup k slovníkom v Swift?
Ako polia môžete získať prístup k prvkom slovníka pomocou syntaxe dolného indexu. Hneď za názvom slovníka je potrebné zahrnúť kľúč s hodnotou, ku ktorej chcete získať prístup, do hranatých zátvoriek.
Príklad 4: Prístup k prvkom slovníka
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"))
Po spustení programu bude výstup:
Voliteľné (1) Voliteľné (8)
K prvkom slovníka môžete pristupovať aj pomocou slučiek for-in.
Príklad 5: Prístup k prvkom slovníka pomocou slučky 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)") )
Po spustení programu bude výstup:
kľúč: hodnota b: 2 kľúč: hodnota a 1: kľúč: hodnota i: 9 kľúč: hodnota c: 3 kľúč: hodnota e: 5 kľúč: hodnota f: 6 kľúč: hodnota g: 7
Ako upraviť slovníkové prvky v Swifte?
Prvky v slovníku môžete pridať pomocou syntaxe dolného indexu. Musíte zahrnúť nový kľúč ako index dolného indexu a priradiť novú hodnotu typu ako Slovník.
Príklad 6: Nastavovanie prvkov v slovníku
var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Japan") = "Tokyo" print(someDictionary)
Po spustení programu bude výstup:
("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
Vo vyššie uvedenom programe sme pri prístupe do slovníka určili v predvolenom parametri hodnotu Not Found . Ak hodnota pre kľúč neexistuje, vráti sa predvolená hodnota, inak sa vráti hodnota.
V našom prípade nie je kľúč „nepál“ k dispozícii, takže program vráti nenájdené .