Swift – Dictionary
Swift is a programming language designed to work with Apple’s Cocoa and Cocoa Touch frameworks. It is intended to be a modern, safe, and flexible alternative to Objective-C. It is built with the open-source community in mind, and it is actively developed by members of the Swift community. Swift is a modern, safe, and flexible alternative to Objective-C.
Swift has something called dictionaries, which is a collection of key-value pairs. These collections of key-value pairs are called dictionaries. It is an unordered collection of key-value pairs. In the dictionary, a unique identifier is known as a key, and a key stores a value. When a dictionary is assigned to a variable then that means the dictionary is mutable(you can modify) but when the dictionary is assigned to a constant then it is immutable(you cannot modify). In a dictionary, a key can be of any type with string, integer, etc. In this article, we will learn about the dictionary collection type in Swift.
Creating a dictionary
In swift, a dictionary is a collection of key-value pairs. We can use any type of data as a key and any type of data as a value. We can create a dictionary using the (key:value) syntax. A key should always be a single item. But a value can be a single item or a collection of items, like an array or a dictionary. To create a dictionary, we use the following syntax:
Syntax:
var someDictionary = [keyType: valueType](key : value)
Here, keyType and valueType are the types of keys and values in the dictionary and they are separated by a colon.
Example:
Swift
// Swift program to create a dictionary var someDictionary: [ String : String ] = [ "fruit" : "Apple" , "vegetable" : "Carrot" ] // Displaying key-value pair print (someDictionary) |
Output:
["vegetable": "Carrot", "fruit": "Apple"]
Creating an empty dictionary
An empty dictionary is a dictionary with no key-value pairs in it. An empty dictionary doesn’t have any initial values. It can be used for storing data in key-value pairs. It acts as a container for storing data. To create an empty dictionary, you use the following syntax:
Syntax:
var emptyDictionary = [keyType: valueType][:]
Here, keyType and valueType are the types of keys and values in the dictionary. And the ([:]) is an empty dictionary literal used to create an empty dictionary.
Change the value of Dictionary
In Swift, we are allowed to change the values of the dictionary using []. The bracket [] changes the value associated with the given key in the dictionary. Similarly, you can also add new key-value pair in the dictionary. If the given key is not present then that key and value pair are added to the dictionary.
Syntax:
Dictionary_name[key] = value
Example:
Swift
// Swift program to change the value of dictionary // Creating a dictionary var someDictionary = [ "one" : "Mohit" , "two" : "Rohit" , "three" : "Tony" ] // Displaying dictionary print ( "Original dictionary: " , someDictionary) // Changing the value of dictionary someDictionary[ "two" ] = "Priya" // Displaying dictionary print ( "Updated dictionary: " , someDictionary) |
Output:
Original dictionary: ["two": "Rohit", "one": "Mohit", "three": "Tony"] Updated dictionary: ["two": "Priya", "one": "Mohit", "three": "Tony"]
Accessing the elements of Dictionary
In the dictionary, we can easily access the key and values separately.
1. Accessing keys
To access the keys of a dictionary we use the keys property. This property returns all the keys from the dictionary.
Syntax:
Dictionary_name.keys
Example:
Swift
// Swift program to accessing keys of dictionary // Creating a dictionary var someDictionary = [ "one" : "Mohit" , "two" : "Rohit" , "three" : "Tony" ] // Accessing all the keys from the dictionary // Using keys property var result = Array (someDictionary.keys) // Displaying keys print ( "Keys:" , result) |
Output:
Keys: ["two", "three", "one"]
2. Accessing values
To access the values of a dictionary we use the values property. This property returns all the values from the dictionary.
Syntax:
Dictionary_name.values
Example:
Swift
// Swift program to accessing values of dictionary // Creating a dictionary var someDictionary = [ "one" : "Mohit" , "two" : "Rohit" , "three" : "Tony" ] // Accessing all the values from the dictionary // Using values property var result = Array (someDictionary.values) // Displaying values print ( "Values:" , result) |
Output:
Values: ["Tony", "Mohit", "Rohit"]
Iterating Over a Dictionary
Sometimes we need to iterate over a dictionary, and it is not feasible to manually use subscript to access the value of a key for each key-value pair in the dictionary. So we can use a for-in loop to iterate over the dictionary. Remember the order of the key-value pairs in the dictionary is not guaranteed to be the same as the order in which they were inserted.
Syntax:
for (key, value) in someDictionary {}
Example:
Swift
// Swift program to iterating over a dictionary // Creating a dictionary var someDictionary = [ "one" : "Mohit" , "two" : "Rohit" , "three" : "Tony" ] // Iterate over dictionary // Using for-in loop for (key, value) in someDictionary { // Print key and value print ( "\(key): \(value)" ) } |
Output:
three: Tony one: Mohit two: Rohit
Creating a Dictionary from an Array
If we have two arrays of the same size, and we want to merge them, to form a dictionary with key as the first array and value as the second array then you are allowed to do this in Swift. The size of both arrays should be the same.
Syntax:
var someDictionary = Dictionary(uniqueKeysWithValues: zip(someArray, someArray2))
Here, array1 is the key and array2 is the value. So, the above syntax will create a dictionary with key as array1 and value as array2
Example:
Swift
// Swift program to create a dictionary from an array // Creating arrays var someArray = [ "one" , "two" , "three" ] var someArray2 = [ "Mohit" , "Rohit" , "Tony" ] // Creating a dictionary from an array var someDictionary = Dictionary (uniqueKeysWithValues: zip( someArray, someArray2)) // Displaying the dictionary print (someDictionary) |
Output:
["one": "Mohit", "two": "Rohit", "three": "Tony"]
Removing items from a Dictionary
As we have seen, a method to get and set the value of a key in a dictionary. But sometimes we want to remove a key-value pair from a dictionary. So, to remove a key-value pair from a dictionary, we use the removeValue(forKey:) method. This method returns the value for the key that was removed, or nil if the key was not present in the dictionary.
Syntax:
dictionary.removeValue(forKey: key)
Example:
Swift
// Swift program to remove key-value pair from the dictionary // Creating a dictionary var someDictionary = [ "key1" : "value1" , "key2" : "value2" ] // Removing the element from the dictionary // Using removeValue() method someDictionary.removeValue(forKey: "key1" ) // Displaying the dictionary print (someDictionary) |
Output:
["key2": "value2"]
Convert a dictionary to an array
Swift allows us to convert a dictionary to an array of key-value pairs. Here, two arrays will be created one for storing keys and one for storing values.
Syntax:
Array(dictionary)
Where dictionary is the dictionary we want to convert to an array.
Example:
Swift
// Swift program to convert a dictionary to an array // Creating and initializing dictionary var dict = [ "Arpit" :100, "Robin" :90, "Nami" :90] // Converting dictionary to array // Here, dictArray1 array stores keys var dictArray1 = Array (dict.keys) // Here, dictArray1 array stores values var dictArray2 = Array (dict.values) // Displaying the array of keys print (dictArray1) // Displaying the array of values print (dictArray2) |
Output:
["Arpit", "Robin", "Nami"] [100, 90, 90]
Dictionary Properties
Swift offers a number of properties and methods to help you work with the dictionary. The count and the empty property are the most important properties of a dictionary. The count property returns the number of key-value pairs in the dictionary. The empty property returns true if the dictionary has no key-value pairs, and false if it has at least one key-value pair.
count Property
Count property returns the count of the key-value pairs present in the given dictionary. This property is useful when you want to iterate over the dictionary. It returns an integer value, the number of key-value pairs in the dictionary.
Syntax:
dictionary.count()
Here, the dictionary is the name of the dictionary and count is the name of the property.
Example:
Swift
// Swift program to count the elements of dictionary // Creating and initializing dictionary var planets = [ "Mercury" : "The closest planet to the sun" , "Venus" : "The second closest planet to the sun" , "Earth" : "The third closest planet to the sun" , "Mars" : "The fourth closest planet to the sun" , "Jupiter" : "The fifth closest planet to the sun" , "Saturn" : "The sixth closest planet to the sun" , "Uranus" : "The seventh closest planet to the sun" , "Neptune" : "The eighth closest planet to the sun" ] // Count the planets // Using count property print ( " Total number of planets in our solar system are \(planets.count)" ) |
Output:
Total number of planets in our solar system are 8
isEmpty Property
Suppose we have a dictionary and we want to perform some operation on it. If the dictionary is empty, we can’t perform any operation on it. So, we can use the empty property to check if a dictionary is empty or not. The empty property returns true if the dictionary has no key-value pairs, and false if it has at least one key-value pair.
Syntax:
dictionary.isEmpty()
Here, the dictionary is the name of the dictionary and isEmpty is the name of the property.
Example:
Swift
// Swift program to check if the dictionary is empty or not // Creating and initializing dictionary var numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] // Creating empty dictionary var emptyDictionary = [ String : String ]() // Creating and initializing dictionary var fruits = [ "Apple" : "Red" , "Orange" : "Orange" , "Banana" : "Yellow" ] // Checking if the number dictionary is empty or not // Using isEmpty property print ( "is numbers dictionary empty? \(numbers.isEmpty)" ) // Checking if the emptyDictionary dictionary // is empty or not. Using isEmpty property print ( "is emptyDictionary dictionary empty? \(emptyDictionary.isEmpty)" ) // Checking if the fruits dictionary // is empty or not. Using isEmpty property print ( "is fruits dictionary empty? \(fruits.isEmpty)" ) |
Output:
is numbers dictionary empty? false is emptyDictionary dictionary empty? true is fruits dictionary empty? false
Contact Us