Dictionaries help you store pairs of related information, like names and phone numbers. You can quickly find a value by using its key.
Dictionary creation and access in Swift
var dictionaryName: [KeyType: ValueType] = [key1: value1, key2: value2] // Access value by key let value = dictionaryName[key]
Keys must be unique and hashable (like strings or numbers).
Accessing a key returns an optional value because the key might not exist.
var ages: [String: Int] = ["Alice": 30, "Bob": 25] let aliceAge = ages["Alice"]
var capitals = ["France": "Paris", "Japan": "Tokyo"] let capitalOfJapan = capitals["Japan"]
var emptyDict = [String: String]() emptyDict["key"] = "value"
This program creates a dictionary of fruits and their colors. It safely accesses the color of Apple and Orange, showing how to handle missing keys.
import Foundation var fruitsColors: [String: String] = ["Apple": "Red", "Banana": "Yellow", "Grape": "Purple"] if let appleColor = fruitsColors["Apple"] { print("The color of Apple is \(appleColor).") } else { print("Apple color not found.") } // Trying to access a key that does not exist if let orangeColor = fruitsColors["Orange"] { print("The color of Orange is \(orangeColor).") } else { print("Orange color not found.") }
Always use optional binding (if let) when accessing dictionary values to avoid errors if the key is missing.
You can add or update values by assigning to a key, like dict["newKey"] = newValue.
Dictionaries do not keep order, so the order of items is not guaranteed.
Dictionaries store data in key-value pairs for quick lookup.
Use square brackets with a key to get or set values.
Accessing a key returns an optional, so handle missing keys safely.
Practice
Solution
Step 1: Understand dictionary purpose
Dictionaries store data as pairs of keys and values, allowing fast access by key.Step 2: Compare options
Only To store data in key-value pairs for quick lookup correctly describes this key-value storage purpose.Final Answer:
To store data in key-value pairs for quick lookup -> Option AQuick Check:
Dictionaries = key-value storage [OK]
- Confusing dictionaries with arrays (which have no keys)
- Thinking dictionaries perform calculations
- Assuming dictionaries create UI elements
Solution
Step 1: Identify Swift dictionary syntax
Swift dictionaries use square brackets with key-value pairs separated by colons.Step 2: Check each option
let dict = ["apple": 1, "banana": 2] uses correct syntax: ["key": value, ...]. Others use tuples, braces, or arrays incorrectly.Final Answer:
let dict = ["apple": 1, "banana": 2] -> Option BQuick Check:
Dictionary syntax = [key: value] [OK]
- Using parentheses instead of square brackets
- Using curly braces which define closures
- Listing keys and values without colons
let fruits = ["apple": 3, "banana": 5] print(fruits["banana"] ?? 0)
Solution
Step 1: Access dictionary value by key
fruits["banana"] looks up the value for key "banana", which is 5.Step 2: Use nil-coalescing operator
The ?? 0 means if the key is missing (nil), print 0; here key exists, so print 5.Final Answer:
5 -> Option AQuick Check:
fruits["banana"] = 5 [OK]
- Expecting nil instead of default value
- Printing the key instead of the value
- Confusing optional with direct value
var scores = ["Alice": 90, "Bob": 85] scores["Charlie"] = 95 print(scores["Charlie"])
Solution
Step 1: Check dictionary modification
Adding a new key-value pair to a var dictionary is allowed, so no error there.Step 2: Understand optional access
Accessing scores["Charlie"] returns an optional Int?; printing it directly shows Optional(95), not 95.Step 3: Identify missing unwrap
To print the value without Optional(...), unwrap it safely or use ?? to provide default.Final Answer:
Missing unwrap of optional when printing -> Option DQuick Check:
Dictionary access returns optional, unwrap needed [OK]
- Thinking keys must be integers
- Assuming dictionary is immutable by default
- Ignoring optional nature of dictionary values
let items = ["pen": 3, "notebook": 0, "eraser": 2], which Swift code correctly creates a new dictionary containing only items with quantity greater than zero?Solution
Step 1: Understand filtering dictionary by value
We want to keep pairs where value > 0, so filter with condition on $0.value.Step 2: Analyze each option
let filtered = items.filter { $0.value > 0 } uses filter with correct condition. let filtered = items.filter { $0.key > 0 } incorrectly compares key (a String) to 0. Options A and C use map/compactMap which transform values, not filter pairs.Final Answer:
let filtered = items.filter { $0.value > 0 } -> Option CQuick Check:
Filter dictionary by value > 0 = let filtered = items.filter { $0.value > 0 } [OK]
- Filtering by key instead of value
- Using map instead of filter for selection
- Using compactMap which changes type, not filters
Ready to prove it?
Pass the test and this pattern moves unknown
