Swift Dictionary (met voorbeelden)

In deze zelfstudie leert u wat woordenboek is, een woordenboek aanmaken en enkele veelgebruikte bewerkingen in het woordenboek.

In het vorige Swift Arrays-artikel hebben we geleerd hoe we meerdere waarden in een variabele / constante kunnen opslaan. In dit artikel gaan we bespreken hoe we gegevens / waarden kunnen opslaan als sleutelwaardeparen.

Wat is een woordenboek?

Een woordenboek is gewoon een container die op ongeordende wijze meerdere gegevens als sleutel / waarde-paar kan bevatten.

Elke waarde is gekoppeld aan een unieke sleutel en slaat gegevens op in een ongeordende lijst vanaf Sets, dwz u krijgt de elementen niet in dezelfde volgorde als waarin u de items in het woordenboek hebt gedefinieerd.

U kunt een woordenboek gebruiken in plaats van een array wanneer u een waarde met een ID in de verzameling moet opzoeken. Stel dat u misschien de hoofdstad van het land wilt doorzoeken. In dat geval maakt u een woordenboek met het belangrijkste land en de waardehoofdstad. Nu krijg je de hoofdstad uit de verzameling door te zoeken met het sleutelland.

In eenvoudige bewoordingen koppelt u een sleutel aan een waarde. In het bovenstaande voorbeeld hebben we een land gekoppeld aan de hoofdstad.

Hoe een woordenboek in Swift aangeven?

U kunt een leeg woordenboek maken door het key:valuegegevenstype tussen vierkante haken op te geven ().

Voorbeeld 1: een leeg woordenboek declareren

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

Wanneer u het programma uitvoert, is de uitvoer:

 (:)

OF

U kunt ook een leeg woordenboek definiëren, zoals hieronder:

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

In het bovenstaande programma hebben we een constante emptyDic van het type woordenboek gedeclareerd met de sleutel van het type Inten de waarde van het type Stringen deze geïnitialiseerd met 0 waarden.

OF

Omdat Swift een type-inferentietaal is, kunt u ook rechtstreeks een woordenboek maken zonder het gegevenstype op te geven, maar moet u initialiseren met enkele waarden zodat de compiler het type kan afleiden als:

Voorbeeld 2: een woordenboek declareren met enkele waarden

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

Wanneer u het programma uitvoert, is de uitvoer:

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

In het bovenstaande programma hebben we een woordenboek gedeclareerd zonder het type expliciet te definiëren, maar te initialiseren met enkele standaardelementen.

Het element bevindt zich in het sleutel: waarde-paar waarbij de sleutel van het type is Stringen de waarde van het Inttype. Omdat het woordenboek een ongeordende lijst is print(someDic), worden de waarden in een andere volgorde uitgevoerd dan gedefinieerd.

Voorbeeld 3: woordenboek maken van twee arrays

We kunnen ook een woordenboek maken met behulp van arrays.

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

Wanneer u het programma uitvoert, is de uitvoer:

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

zip(customKeys,customValues)Creëert in het bovenstaande programma een nieuwe volgorde van tuple waarbij elk element de waarde van customKeys en customValues ​​vertegenwoordigt. Ga naar Swit zip voor meer informatie over hoe zip werkt.

Nu kunnen we deze reeks doorgeven aan de Dictionary(uniqueKeysWithValues:)initialisatieprogramma en een nieuw woordenboek maken. Voert daarom print(newDictionary)een nieuwe Dictionary uit met elementen uit twee arrays.

Hoe toegang krijgen tot woordenboekelementen in Swift?

Als arrays hebt u toegang tot elementen van een woordenboek door de subscriptsyntaxis te gebruiken. U moet de sleutel van de waarde die u wilt openen tussen vierkante haken plaatsen onmiddellijk na de naam van het woordenboek.

Voorbeeld 4: toegang tot elementen van een woordenboek

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

Wanneer u het programma uitvoert, is de uitvoer:

 Optioneel (1) Optioneel (8) 

U kunt ook toegang krijgen tot elementen van een woordenboek met for-in-lussen.

Voorbeeld 5: toegang tot elementen van een woordenboek met for-in-lus

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

Wanneer u het programma uitvoert, is de uitvoer:

 key: b waarde: 2 key: a waarde: 1 key: i waarde: 9 key: c waarde: 3 key: e waarde: 5 key: f waarde: 6 key: g waarde: 7 

Hoe woordenboekelementen in Swift wijzigen?

U kunt elementen van in het woordenboek toevoegen door de syntaxis van subscript te gebruiken. U moet een nieuwe sleutel opnemen als de subscriptindex en een nieuwe waarde toewijzen van het type vanaf Woordenboek.

Voorbeeld 6: elementen in een woordenboek instellen

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

Wanneer u het programma uitvoert, is de uitvoer:

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

In het bovenstaande programma hebben we een waarde Niet gevonden gespecificeerd in de standaardparameter tijdens het openen van het woordenboek. Als de waarde niet bestaat voor de sleutel, wordt de standaardwaarde geretourneerd, anders wordt de waarde geretourneerd.

In ons geval is de sleutel "nepal" niet aanwezig, dus het programma retourneert Not Found .

Interessante artikelen...