Dictionaries map keys to values so code can look up a value by name.

Read by key

city
dictionary_lookup.swift
Replay: real traced execution (multi-file project)
let city = "Austin"
let temperatures = ["Austin": 72, "Denver": 55, "Seattle": 63]
let current = temperatures[city]!
let warmEnough = current >= 65

print("city=\(city)")
print("temperature=\(current)")
print("warmEnough=\(warmEnough)")
let city = "Denver"
let temperatures = ["Austin": 72, "Denver": 55, "Seattle": 63]
let current = temperatures[city]!
let warmEnough = current >= 65

print("city=\(city)")
print("temperature=\(current)")
print("warmEnough=\(warmEnough)")
let city = "Seattle"
let temperatures = ["Austin": 72, "Denver": 55, "Seattle": 63]
let current = temperatures[city]!
let warmEnough = current >= 65

print("city=\(city)")
print("temperature=\(current)")
print("warmEnough=\(warmEnough)")
  1. city ← Austin, temperatures ← ["Seattle": 63, "Austin": 72, "Denver": 55]

    1let city→ Austin = "Austin"  //@city="Denver", "Seattle"2let temperatures→ ["Seattle": 63, "Austin": 72, "Denver": 55] = ["Austin": 72, "Denver": 55, "Seattle": 63]3let current→ 72 = temperatures[city]Optional(72)!4let warmEnough→ true = current72 >= 6556print("city=\(cityAustin)")7print("temperature=\(current72)")8print("warmEnough=\(warmEnoughtrue)")
    outputcity=Austin
    temperature=72
    warmEnough=true
  1. city ← Denver, temperatures ← ["Denver": 55, "Austin": 72, "Seattle": 63]

    1let city→ Denver = "Denver"2let temperatures→ ["Denver": 55, "Austin": 72, "Seattle": 63] = ["Austin": 72, "Denver": 55, "Seattle": 63]3let current→ 55 = temperatures[city]Optional(55)!4let warmEnough→ false = current55 >= 6556print("city=\(cityDenver)")7print("temperature=\(current55)")8print("warmEnough=\(warmEnoughfalse)")
    outputcity=Denver
    temperature=55
    warmEnough=false
  1. city ← Seattle, temperatures ← ["Austin": 72, "Denver": 55, "Seattle": 63]

    1let city→ Seattle = "Seattle"2let temperatures→ ["Austin": 72, "Denver": 55, "Seattle": 63] = ["Austin": 72, "Denver": 55, "Seattle": 63]3let current→ 63 = temperatures[city]Optional(63)!4let warmEnough→ false = current63 >= 6556print("city=\(citySeattle)")7print("temperature=\(current63)")8print("warmEnough=\(warmEnoughfalse)")
    outputcity=Seattle
    temperature=63
    warmEnough=false

Look Up the City

  1. The dictionary stores temperatures for three cities.
  2. city is Austin.
  3. temperatures[city]! reads 72.
  4. 72 >= 65 makes warmEnough true. | City | Temperature | Warm enough? | | --- | --- | --- | | Austin | 72 | true | | Denver | 55 | false | | Seattle | 63 | false |
dictionaries A dictionary lookup uses a key. When the key is known to exist, unwrapping the result gives the stored value for later calculations.

Exercise: dictionary_lookup.swift

Look up a city temperature, compare it to 65, and print whether it is warm enough