Swift Dictionary (med eksempler)

I denne veiledningen vil du lære om hva ordbok er, lage en ordbok og noen vanlige operasjoner i ordboken.

I den forrige artikkelen om Swift Arrays lærte vi hvordan vi kan lagre flere verdier i en variabel / konstant. I denne artikkelen skal vi diskutere hvordan vi kan lagre data / verdier som nøkkelverdipar.

Hva er en ordbok?

En ordbok er ganske enkelt en beholder som kan inneholde flere data som nøkkelverdipar på en uordnet måte.

Hver verdi er assosiert med en unik nøkkel og lagrer data i en ikke-ordnet liste fra sett, dvs. at du ikke får elementene i samme rekkefølge som du definerte elementene i ordboken.

Du kan bruke ordbok i stedet for matrise når du trenger å slå opp verdien med noen identifikatorer i samlingen. Anta at det kan være lurt å søke i hovedstaden i landet. I så fall oppretter du en ordbok med nøkkelland og hovedstad. Nå får du hovedstaden fra samlingen ved å søke med nøkkellandet.

Enkelt sagt parer du en nøkkel til en verdi. I eksemplet ovenfor parret vi et land til hovedstaden.

Hvordan erklære jeg en ordbok på Swift?

Du kan opprette en tom ordbok ved å spesifisere key:valuedatatypen i parentes ().

Eksempel 1: Erklære en tom ordbok

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

Når du kjører programmet, vil utdataene være:

 (:)

ELLER

Du kan også definere en tom ordbok som nedenfor:

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

I det ovennevnte programmet har vi erklært en konstant tomDic av type ordbok med nøkkel av type Intog verdi av type Stringog initialisert den med 0 verdier.

ELLER

Siden Swift er et type inferensspråk, kan du også opprette ordbok direkte uten å spesifisere datatypen, men du må initialisere med noen verdier slik at kompilatoren kan utlede typen som:

Eksempel 2: Deklarere en ordbok med noen verdier

 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 kjører programmet, vil utdataene være:

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

I programmet ovenfor har vi erklært en ordbok uten å definere typen eksplisitt, men initialiseres med noen standardelementer.

Elementet er i nøkkel: verdipar der nøkkelen er av typen Stringog verdien er av Inttypen. Siden ordlisten er en ikke-ordnet liste, print(someDic)mates ut verdiene i annen rekkefølge enn definert.

Eksempel 3: Opprette ordbok fra to matriser

Vi kan også lage en ordbok ved hjelp av matriser.

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

Når du kjører programmet, vil utdataene være:

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

I det ovennevnte programmet zip(customKeys,customValues)oppretter du en ny sekvens av tuple med hvert element som representerer verdi fra customKeys og customValues. Hvis du vil lære mer om hvordan zip fungerer, kan du gå til Swit zip.

Nå kan vi overføre denne sekvensen til Dictionary(uniqueKeysWithValues:)initialisereren og opprette en ny ordbok. Skriver derfor ut print(newDictionary)en ny ordbok med elementer fra to matriser.

Hvordan få tilgang til ordbokselementer i Swift?

Som matriser kan du få tilgang til elementer i en ordbok ved å bruke syntaks for abonnement. Du må ta med nøkkelen til verdien du vil ha tilgang til, innen parentes rett etter navnet på ordboken.

Eksempel 4: Få tilgang til elementer i en ordbok

 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 kjører programmet, vil utdataene være:

 Valgfritt (1) Valgfritt (8) 

Du kan også få tilgang til elementer i en ordbok ved hjelp av for-in-løkker.

Eksempel 5: Få tilgang til elementer i en ordbok 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 kjører programmet, vil utdataene være:

 nøkkel: b verdi: 2 nøkkel: en verdi: 1 nøkkel: i verdi: 9 nøkkel: c verdi: 3 nøkkel: e verdi: 5 nøkkel: f verdi: 6 nøkkel: g verdi: 7 

Hvordan endrer ordbokelementene i Swift?

Du kan legge til elementer i ordboken ved å bruke abonnementsyntaks. Du må ta med ny nøkkel som indeks for abonnement og tilordne en ny verdi av typen fra ordbok.

Eksempel 6: Angi elementer i en ordbok

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

Når du kjører programmet, vil utdataene 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 det ovennevnte programmet har vi angitt en verdi Ikke funnet i standardparameteren mens vi åpner ordboken. Hvis verdien ikke eksisterer for nøkkelen, returneres standardverdien, ellers returneres verdien.

I vårt tilfelle er ikke nøkkelen "nepal" til stede, så programmet returnerer Ikke funnet .

Interessante artikler...