To assign the value of a key-value pair to a variable, set the value of a variable to dictionaryName[keyValue]
.
Note: Assigning the value of a key-value pair to a variable will return an optional value. To extract the value, use optional unwrapping.
var primaryHex = ["red": "#ff0000","yellow": "#ffff00","blue": "#0000ff",]print("The hex code for blue is \(primaryHex["blue"])")// Prints: The hex code for blue is Optional("#0000ff")if let redHex = primaryHex["red"] {print("The hex code for red is \(redHex)")}// Prints: The hex code for red is #ff0000
A dictionary is an unordered collection of paired data, or key-value pairs.
var dictionaryName = ["Key1": "Value1","Key2": "Value2","Key3": "Value3"]
Every key in a dictionary is unique.
Keys can be be used to access, remove, add, or modify its associated value.
// Each key is unique even if they all contain the same valuevar fruitStand = ["Coconuts": 12,"Pineapples": 12,"Papaya": 12]
In a dictionary, the data type of the keys and the values must remain consistent.
// Contains only String keys and Int valuesvar numberOfSides = ["triangle": 3,"square": 4,"rectangle": 4]
Dictionary literals contain lists of key-value pairs that are separated by commas; this syntax can be used to create dictionaries that are populated with values.
var employeeID = ["Hamlet": 1367,"Horatio": 8261,"Ophelia": 9318]
An empty dictionary is a dictionary that contains no key-value pairs.
There is more than one way to initialize an empty dictionary; the method chosen is purely up to preference and makes no impact on the dictionary.
// Initializer syntax:var yearlyFishPopulation = [Int: Int]()// Empty dictionary literal syntax:var yearlyBirdPopulation: [Int: Int] = [:]
To add a new key-value to a dictionary, use subscript syntax by adding a new key contained within brackets [ ]
after the name of a dictionary and a new value after the assignment operator (=
).
var pronunciation = ["library": "lai·breh·ree","apple": "a·pl"]// New key: "programming", New value: "prow·gra·muhng"pronunciation["programming"] = "prow·gra·muhng"
To remove a key-value pair from a dictionary, set the value of a key to nil
with subscript syntax or use the.removeValue()
method.
To remove all the values in a dictionary, append .removeAll()
to a dictionary.
var bookShelf = ["Goodnight Moon": "Margaret Wise Brown","The BFG": "Roald Dahl","Falling Up": "Shel Silverstein","No, David!": "David Shannon"]// Remove value by setting key to nilbookShelf["The BFG"] = nil// Remove value using .removeValue()bookShelf.removeValue(forKey: "Goodnight Moon")// Remove all valuesbookShelf.removeAll()
To change the value of a key-value pair, use the .updateValue()
method or subscript syntax by appending brackets [ ]
with an existing key inside them to a dictionary’s name and then adding an assignment operator (=
) followed by the modified value.
var change = ["Quarter": 0.29,"Dime": 0.15,"Nickel": 0.05,"Penny": 0.01]// Change value using subscript syntaxchange["Quarter"] = .25// Change value using .updateValue()change.updateValue(.10, forKey: "Dime")
.isEmpty
PropertyThe .isEmpty
property will return a true
value if there are no key-value pairs in a dictionary and false
if the dictionary does contain key-value pairs.
var bakery = [String:Int]()// Check if dictionary is emptyprint(bakery.isEmpty) // Prints truebakery["Cupcakes"] = 12// Check if dictionary is emptyprint(bakery.isEmpty) // Prints false
.count
PropertyThe .count
property returns an integer that represents how many key-value pairs are in a dictionary.
var fruitStand = ["Apples": 12,"Bananas": 20,"Oranges", 17]print(fruitStand.count) // Prints: 3
A for
-in
loop can be used to iterate through the keys and values of a dictionary.
var emojiMeaning = ["🤔": "Thinking Face","😪": "Sleepy Face","😵": "Dizzy Face"]// Iterate through both keys and valuesfor (emoji, meaning) in emojiMeaning {print("\(emoji) is known as the '\(meaning) Emoji'")}// Iterate only through keysfor emoji in emojiMeaning.keys {print(emoji)}// Iterate only through valuesfor meaning in emojiMeaning.values {print(meaning)}