Codecademy Logo

Dictionaries

Assigning a Value to a Variable

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

Dictionary

A dictionary is an unordered collection of paired data, or key-value pairs.

var dictionaryName = [
"Key1": "Value1",
"Key2": "Value2",
"Key3": "Value3"
]

Keys

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 value
var fruitStand = [
"Coconuts": 12,
"Pineapples": 12,
"Papaya": 12
]

Type Consistency

In a dictionary, the data type of the keys and the values must remain consistent.

// Contains only String keys and Int values
var numberOfSides = [
"triangle": 3,
"square": 4,
"rectangle": 4
]

Initialize a Populated Dictionary

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
]

Initialize an Empty Dictionary

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] = [:]

Adding to a Dictionary

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"

Removing Key-Value Pairs

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 nil
bookShelf["The BFG"] = nil
// Remove value using .removeValue()
bookShelf.removeValue(forKey: "Goodnight Moon")
// Remove all values
bookShelf.removeAll()

Modifying Key-Value Pairs

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 syntax
change["Quarter"] = .25
// Change value using .updateValue()
change.updateValue(.10, forKey: "Dime")

.isEmpty Property

The .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 empty
print(bakery.isEmpty) // Prints true
bakery["Cupcakes"] = 12
// Check if dictionary is empty
print(bakery.isEmpty) // Prints false

.count Property

The .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

Iterating Over a Dictionary

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 values
for (emoji, meaning) in emojiMeaning {
print("\(emoji) is known as the '\(meaning) Emoji'")
}
// Iterate only through keys
for emoji in emojiMeaning.keys {
print(emoji)
}
// Iterate only through values
for meaning in emojiMeaning.values {
print(meaning)
}

Learn more on Codecademy