Codecademy Logo



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

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

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