Dictionaries store pairs of keys and values. Methods help you add, find, or change these pairs easily. Default values keep your program safe when a key is missing.
You want to count how many times each word appears in a text.
You need to look up a phone number by a person's name.
You want to update a score for a player in a game.
You want to get a value but provide a backup if the key is not found.
Syntax
Swift
var dict = [KeyType: ValueType]()
dict[key] = value
let value = dict[key, default: defaultValue]
dict.updateValue(newValue, forKey: key)
dict.removeValue(forKey: key)
Use square brackets [] to get or set values by key.
The default value syntax helps avoid errors when a key is missing.
Examples
Change Alice's score to 12.
Swift
var scores = ["Alice": 10, "Bob": 8]
scores["Alice"] = 12
Get Bob's score or 0 if Bob is not in the dictionary.
Swift
let bobScore = scores["Bob", default: 0]
Add or update Charlie's score to 15.
Swift
scores.updateValue(15, forKey: "Charlie")
Remove Bob's score from the dictionary.
Swift
scores.removeValue(forKey: "Bob")
Sample Program
This program shows how to add, get with default, update, and remove items in a dictionary.
Swift
var inventory = ["apple": 3, "banana": 5]
// Add or update
inventory["orange"] = 2// Get value with defaultlet appleCount = inventory["apple", default: 0]
let pearCount = inventory["pear", default: 0]
// Update value
inventory.updateValue(10, forKey: "banana")
// Remove value
inventory.removeValue(forKey: "apple")
print("Inventory: \(inventory)")
print("Apple count: \(appleCount)")
print("Pear count: \(pearCount)")
OutputSuccess
Important Notes
Using default values prevents your program from crashing when a key is missing.
updateValue returns the old value if it existed, which can be useful.
Removing a key that does not exist does nothing, so it's safe.
Summary
Dictionaries store key-value pairs and have useful methods to manage them.
Use default values to safely get values when keys might be missing.
Methods like updateValue and removeValue help change the dictionary easily.
Practice
(1/5)
1. What does the updateValue(_:forKey:) method do in a Swift dictionary?
easy
A. It updates the value for a given key and returns the old value if it existed.
B. It removes the key and its value from the dictionary.
C. It returns the value for a key or a default if the key is missing.
D. It creates a new dictionary with updated keys.
Solution
Step 1: Understand updateValue method purpose
The updateValue(_:forKey:) method changes the value for a specified key in the dictionary.
Step 2: Check return behavior
This method returns the old value if the key existed, otherwise nil.
Final Answer:
It updates the value for a given key and returns the old value if it existed. -> Option A
Quick Check:
updateValue returns old value or nil [OK]
Hint: Remember updateValue returns old value if key exists [OK]
Common Mistakes:
Confusing updateValue with removeValue
Thinking it returns the new value
Assuming it creates a new dictionary
2. Which of the following is the correct syntax to get a value from a dictionary with a default in Swift?
easy
A. let value = dict[key, default: 0]
B. let value = dict.get(key, default: 0)
C. let value = dict[key] ?? 0
D. let value = dict.value(forKey: key, default: 0)
Solution
Step 1: Recall Swift dictionary default value syntax
Swift dictionaries allow accessing values with a default using dict[key, default: defaultValue].
Step 2: Compare options
let value = dict[key, default: 0] matches the correct syntax. let value = dict[key] ?? 0 uses nil-coalescing but is not the dictionary default syntax.
Final Answer:
let value = dict[key, default: 0] -> Option A
Quick Check:
Use dict[key, default:] for default values [OK]
Hint: Use square brackets with default: for safe dictionary access [OK]
Common Mistakes:
Using get() method which doesn't exist
Confusing nil-coalescing with dictionary default syntax
Using value(forKey:) which is for NSObject
3. What is the output of this Swift code?
var scores = ["Alice": 10, "Bob": 8]
let oldValue = scores.updateValue(12, forKey: "Alice")
let missingValue = scores.updateValue(5, forKey: "Charlie")
print(oldValue, missingValue, scores)
medium
A. nil Optional(5) ["Alice": 12, "Bob": 8, "Charlie": 5]
B. 10 5 ["Alice": 12, "Bob": 8, "Charlie": 5]
C. Optional(10) nil ["Alice": 12, "Bob": 8, "Charlie": 5]
D. Optional(12) Optional(5) ["Alice": 10, "Bob": 8, "Charlie": 5]
Solution
Step 1: Understand updateValue return values
Updating "Alice" from 10 to 12 returns old value Optional(10). Adding "Charlie" returns nil because key was missing.
Step 2: Check dictionary after updates
Dictionary now has "Alice":12, "Bob":8, and "Charlie":5.
Hint: updateValue returns old value wrapped in Optional or nil if new key [OK]
Common Mistakes:
Expecting updateValue to return new value
Forgetting Optional wrapping
Not updating dictionary correctly
4. Identify the error in this Swift code snippet:
var dict = ["a": 1, "b": 2]
let removed = dict.removeValue(forKey: "c")
print(removed!)
medium
A. Dictionary keys must be integers, not strings.
B. Force unwrapping removed causes runtime crash if key missing.
C. removeValue(forKey:) does not exist for dictionaries.
D. print statement syntax is incorrect.
Solution
Step 1: Understand removeValue return type
removeValue(forKey:) returns an Optional value. If key is missing, it returns nil.
Step 2: Analyze force unwrapping
Force unwrapping removed! when key "c" is missing causes a runtime crash.
Final Answer:
Force unwrapping removed causes runtime crash if key missing. -> Option B
Quick Check:
Force unwrap nil causes crash [OK]
Hint: Avoid force unwrapping optional from removeValue without check [OK]
Common Mistakes:
Assuming removeValue always returns a value
Ignoring optional unwrapping
Thinking removeValue removes all keys
5. You have a dictionary var inventory = ["apple": 3, "banana": 5]. Write code to safely add 2 to the count of "orange", even if it doesn't exist yet, using dictionary default values. What is the correct way?
hard
A. inventory["orange"] = inventory["orange"]! + 2
B. inventory["orange"] = inventory["orange"] ?? 0 + 2
C. inventory.updateValue(inventory["orange"]! + 2, forKey: "orange")
D. inventory["orange"] = inventory["orange", default: 0] + 2
Solution
Step 1: Understand safe addition with default
Using inventory["orange", default: 0] returns 0 if "orange" key is missing.
Step 2: Increment value safely
Adding 2 to this default value and assigning back to inventory["orange"] updates or creates the key safely.
Final Answer:
inventory["orange"] = inventory["orange", default: 0] + 2 -> Option D
Quick Check:
dict[key] = dict[key, default: 0] + value for safe increments [OK]
Hint: Use dict[key] = dict[key, default: 0] + amount to add safely [OK]
Common Mistakes:
Force unwrapping missing keys causing crash
Using += on read-only default subscript
Using updateValue without checking for nil
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.