Dicionário Swift (com exemplos)

Neste tutorial, você aprenderá sobre o que é dicionário, como criar um dicionário e algumas operações comuns em dicionário.

No artigo anterior do Swift Arrays, aprendemos como podemos armazenar vários valores em uma variável / constante. Neste artigo, vamos discutir como podemos armazenar dados / valores como pares de valores-chave.

O que é um dicionário?

Um dicionário é simplesmente um contêiner que pode conter vários dados como um par de valores-chave de forma não ordenada.

Cada valor está associado a uma chave única e armazena dados em uma lista não ordenada de Conjuntos, ou seja, você não obtém os elementos na mesma ordem em que definiu os itens no dicionário.

Você pode usar o dicionário em vez da matriz quando precisar pesquisar o valor com algum identificador na coleção. Suponha que você queira pesquisar a capital do país. Nesse caso, você criará um dicionário com a chave do país e a capital do valor. Agora, você obtém a capital da coleção pesquisando com o país-chave.

Em termos simples, você emparelha uma chave com um valor. No exemplo acima, associamos um país a sua capital.

Como declarar um dicionário em Swift?

Você pode criar um dicionário vazio especificando o key:valuetipo de dados entre colchetes ().

Exemplo 1: declaração de um dicionário vazio

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

Quando você executa o programa, a saída será:

 (:)

OU

Você também pode definir um dicionário vazio conforme abaixo:

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

No programa acima, declaramos uma constante emptyDic do dicionário de tipo com chave do tipo Inte valor do tipo Stringe a inicializamos com 0 valores.

OU

Como o Swift é uma linguagem de inferência de tipo, você também pode criar dicionário diretamente sem especificar o tipo de dados, mas deve inicializar com alguns valores para que o compilador possa inferir seu tipo como:

Exemplo 2: declaração de um dicionário com alguns valores

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

Quando você executa o programa, a saída será:

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

No programa acima, declaramos um dicionário sem definir o tipo explicitamente, mas inicializando com alguns elementos padrão.

O elemento está no par chave: valor em que a chave é do tipo Stringe o valor é do Inttipo. Como o dicionário é uma lista não ordenada, print(someDic)os valores são impressos em uma ordem diferente da definida.

Exemplo 3: Criação de dicionário a partir de duas matrizes

Também podemos criar um dicionário usando arrays.

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

Quando você executa o programa, a saída será:

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

No programa acima, zip(customKeys,customValues)cria uma nova Sequência de tupla com cada elemento representando o valor de customKeys e customValues. Para saber mais sobre como funciona o zip, visite Swit zip.

Agora, podemos passar esta sequência para o Dictionary(uniqueKeysWithValues:)inicializador e criar um novo Dicionário. Portanto, print(newDictionary)gera um novo Dicionário com elementos de duas matrizes.

Como acessar os elementos do dicionário em Swift?

Como matrizes, você pode acessar elementos de um dicionário usando a sintaxe do subscrito. Você precisa incluir a chave do valor que deseja acessar entre colchetes imediatamente após o nome do dicionário.

Exemplo 4: Acessando elementos de um dicionário

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

Quando você executa o programa, a saída será:

 Opcional (1) Opcional (8) 

Você também pode acessar elementos de um dicionário usando loops for-in.

Exemplo 5: Acessando elementos de um dicionário com loop 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)") ) 

Quando você executa o programa, a saída será:

 chave: b valor: 2 chave: a valor: 1 chave: i valor: 9 chave: c valor: 3 chave: e valor: 5 chave: f valor: 6 chave: g valor: 7 

Como modificar elementos de dicionário em Swift?

Você pode adicionar elementos de no dicionário usando a sintaxe do subscrito. Você precisa incluir uma nova chave como índice de subscrito e atribuir um novo valor do tipo de Dicionário.

Exemplo 6: definindo elementos em um dicionário

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

Quando você executa o programa, a saída será:

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

No programa acima, especificamos um valor Not Found no parâmetro padrão ao acessar o dicionário. Se o valor não existir para a chave, o valor padrão será retornado, caso contrário, o valor será retornado.

No nosso caso, a chave "nepal" não está presente, então o programa retorna Not Found .

Artigos interessantes...