Tässä opetusohjelmassa opit sanakirjasta, sanakirjan luomisesta ja joistakin yleisimmistä toiminnoista sanakirjassa.
Edellisessä Swift Arrays -artikkelissa opimme kuinka voimme tallentaa useita arvoja muuttujaan / vakioon. Tässä artikkelissa keskustelemme siitä, kuinka voimme tallentaa tiedot / arvot avainarvopareina.
Mikä on sanakirja?
Sanakirja on yksinkertaisesti säilö, johon mahtuu useita tietoja avainarvoparina järjestämättömällä tavalla.
Jokainen arvo liittyy yksilölliseen avaimeen ja tallentaa tietoja järjestämättömään luetteloon sarjasta alkaen, ts. Et saa elementtejä samassa järjestyksessä kuin määritit sanakirjan kohteet.
Voit käyttää sanastoa matriisin sijasta, kun sinun on haettava arvoa jonkin tunnisteen avulla kokoelmasta. Oletetaan, että haluat ehkä etsiä maan pääkaupungista. Siinä tapauksessa luot sanakirjan, jossa on keskeinen maa ja arvo pääkaupunki. Nyt saat pääkaupungin kokoelmasta etsimällä avainmaan kanssa.
Yksinkertaisesti sanottuna avain ja pari yhdistetään arvoon. Edellä olevassa esimerkissä pariliitettiin maa pääkaupunkiinsa.
Kuinka julistaa sanakirja Swiftissä?
Voit luoda tyhjän sanakirjan määrittämällä key:value
tietotyyppi hakasulkeissa ()
.
Esimerkki 1: Tyhjän sanakirjan julistaminen
let emptyDic:(Int:String) = (:) print(emptyDic)
Kun suoritat ohjelmaa, tulos on:
(:)
TAI
Voit myös määrittää tyhjän sanakirjan seuraavasti:
let emptyDic:Dictionary = (:) print(emptyDic)
Yllä olevassa ohjelmassa olemme julistaneet vakion tyhjäDic of type sanakirja tyypin Int
ja tyypin arvolla olevalla avaimella ja alustaneet String
sen 0 arvolla.
TAI
Koska Swift on tyypin päättelykieli, voit luoda sanakirjan myös suoraan määrittelemättä tietotyyppiä, mutta se on alustettava joillakin arvoilla, jotta kääntäjä voi päätellä sen tyypin seuraavasti:
Esimerkki 2: Sanakirjan julistaminen joillakin arvoilla
let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic)
Kun suoritat ohjelmaa, tulos on:
("b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, " h ": 8)
Yllä olevassa ohjelmassa olemme julistaneet sanakirjan määrittelemättä tyyppiä nimenomaisesti, mutta alustamalla joitain oletuselementtejä.
Elementti on avaimessa: arvopari, jossa avain on tyyppiä String
ja arvo Int
tyyppiä. Koska sanakirja on järjestämätön luettelo, print(someDic)
arvot annetaan eri järjestyksessä kuin määritelty.
Esimerkki 3: Sanakirjan luominen kahdesta taulukosta
Voimme myös luoda sanakirjan matriisien avulla.
let customKeys = ("Facebook", "Google", "Amazon") let customValues = ("Mark", "Larry", "Jeff") let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary)
Kun suoritat ohjelmaa, tulos on:
("Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark")
zip(customKeys,customValues)
Luo yllä olevassa ohjelmassa uuden sekvenssin, jossa kukin elementti edustaa customKeys- ja customValues-arvoja. Lisätietoja vetoketjun toiminnasta on Swit zip -sivulla.
Nyt voimme välittää tämän sekvenssin Dictionary(uniqueKeysWithValues:)
alustajalle ja luoda uuden sanakirjan. Siksi print(newDictionary)
tuottaa uuden sanakirjan, jossa on kahden matriisin elementtejä.
Kuinka käyttää sanakirjan elementtejä Swiftissä?
Matriiseina voit käyttää sanakirjan elementtejä käyttämällä alaindeksin syntaksia. Sinun on lisättävä avain arvoon, jota haluat käyttää, hakasulkeissa heti sanakirjan nimen jälkeen.
Esimerkki 4: Sanakirjan elementtien käyttö
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"))
Kun suoritat ohjelmaa, tulos on:
Valinnainen (1) Valinnainen (8)
Voit käyttää sanakirjan elementtejä myös sisääntulosilmukoilla.
Esimerkki 5: Sanakirjan elementtien käyttö sisäänsyöttösilmukalla
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)") )
Kun suoritat ohjelmaa, tulos on:
avain: b arvo: 2 avain: arvo: 1 avain: i arvo: 9 avain: c arvo: 3 avain: e arvo: 5 avain: f arvo: 6 avain: g arvo: 7
Kuinka muokata sanakirjaelementtejä Swiftissä?
Voit lisätä elementtejä sanakirjaan alaindeksin syntaksin avulla. Sinun on sisällytettävä uusi avain alaindeksiin ja määritettävä uusi tyypin arvo sanakirjasta.
Esimerkki 6: Elementtien asettaminen sanakirjaan
var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Japan") = "Tokyo" print(someDictionary)
Kun suoritat ohjelmaa, tulos on:
("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
Edellä olevassa ohjelmassa olemme määrittäneet arvon Ei löydy oletusparametriin, kun käytämme sanakirjaa. Jos avaimen arvoa ei ole, palautetaan oletusarvo, muuten arvo palautetaan.
Meidän tapauksessamme avainta "nepal" ei ole läsnä, joten ohjelma palauttaa Ei löydy .