Swift Dictionary (med eksempler)

I denne vejledning lærer du om, hvad ordbog er, oprettelse af en ordbog og nogle almindelige handlinger i ordbogen.

I den forrige Swift Arrays-artikel lærte vi, hvordan vi kan gemme flere værdier i en variabel / konstant. I denne artikel skal vi diskutere, hvordan vi kan gemme data / værdier som nøgleværdipar.

Hvad er en ordbog?

En ordbog er simpelthen en container, der kan indeholde flere data som nøgleværdipar på en uordnet måde.

Hver værdi er knyttet til en unik nøgle og gemmer data i en ikke-ordnet liste fra sæt, dvs. du får ikke elementerne i samme rækkefølge som du definerede elementerne i ordbogen.

Du kan bruge ordbog i stedet for matrix, når du skal slå værdi op med en eller anden identifikator i samlingen. Antag, at du måske vil søge i hovedstaden i landet. I så fald opretter du en ordbog med nøgleland og hovedstad. Nu får du hovedstaden fra samlingen ved at søge med nøglelandet.

Enkelt sagt parrer du en nøgle til en værdi. I ovenstående eksempel parrede vi et land med dets hovedstad.

Hvordan erklærer jeg en ordbog på Swift?

Du kan oprette en tom ordbog ved at angive key:valuedatatypen i parentes ().

Eksempel 1: Erklæring om en tom ordbog

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

Når du kører programmet, vil output være:

 (:)

ELLER

Du kan også definere en tom ordbog som nedenfor:

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

I ovenstående program har vi erklæret en konstant tomDic af typebog med nøgle af type Intog værdi af typen Stringog initialiseret den med 0-værdier.

ELLER

Da Swift er et typeslutningssprog, kan du også oprette ordbog direkte uden at specificere datatypen, men skal initialiseres med nogle værdier, så kompilatoren kan udlede sin type som:

Eksempel 2: Erklæring om en ordbog med nogle værdier

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

Når du kører programmet, vil output være:

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

I ovenstående program har vi erklæret en ordbog uden at definere typen eksplicit, men initialisere med nogle standardelementer.

Elementet er i nøgle: værdipar, hvor nøglen er af typen, Stringog værdien er af Inttypen. Da ordbogen er en ikke-ordnet liste, print(someDic)udsender værdierne i anden rækkefølge end defineret.

Eksempel 3: Oprettelse af ordbog fra to arrays

Vi kan også oprette en ordbog ved hjælp af arrays.

 let customKeys = ("Facebook", "Google", "Amazon") let customValues = ("Mark", "Larry", "Jeff") let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary) 

Når du kører programmet, vil output være:

 ("Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark")

I ovenstående program zip(customKeys,customValues)opretter en ny sekvens af tuple, hvor hvert element repræsenterer værdi fra customKeys og customValues. For at lære mere om, hvordan zip fungerer, skal du besøge Swit zip.

Nu kan vi videregive denne sekvens til Dictionary(uniqueKeysWithValues:)initialisereren og oprette en ny ordbog. Derfor print(newDictionary)udsender en ny ordbog med elementer fra to arrays.

Hvordan får man adgang til ordbogselementer i Swift?

Som arrays kan du få adgang til elementer i en ordbog ved hjælp af abonnementsyntaks. Du skal medtage nøglen til den værdi, du vil have adgang til, inden for firkantede parenteser umiddelbart efter navnet på ordbogen.

Eksempel 4: Adgang til elementer i en ordbog

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

Når du kører programmet, vil output være:

 Valgfri (1) Valgfri (8) 

Du kan også få adgang til elementer i en ordbog ved hjælp af for-in-sløjfer.

Eksempel 5: Adgang til elementer i en ordbog med for-in-loop

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

Når du kører programmet, vil output være:

 nøgle: b værdi: 2 nøgle: en værdi: 1 nøgle: i værdi: 9 nøgle: c værdi: 3 nøgle: e værdi: 5 nøgle: f værdi: 6 nøgle: g værdi: 7 

Hvordan ændrer man ordbogselementer i Swift?

Du kan tilføje elementer i ordbogen ved hjælp af subscript-syntaksen. Du skal medtage ny nøgle som abonnementsindeks og tildele en ny værdi af typen fra ordbogen.

Eksempel 6: Indstilling af elementer i en ordbog

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Japan") = "Tokyo" print(someDictionary) 

Når du kører programmet, vil output være:

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

I ovenstående program har vi angivet en værdi Ikke fundet i standardparameteren, mens vi åbner ordbogen. Hvis værdien ikke findes for nøglen, returneres standardværdien ellers returneres værdien.

I vores tilfælde er nøglen "nepal" ikke til stede, så programmet returnerer Ikke fundet .

Interessante artikler...