Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialWilliam Hartvedt Skogstad
5,857 PointsHere we have a dictionary of type [String: String] that contains a three letter country code as a
Challenge Task 1 of 1
Here we have a dictionary of type [String: String] that contains a three letter country code as a key and that country's capital city as the associated value.
We also have three empty arrays, europeanCapitals, asianCapitals, and otherCapitals. The goal is to iterate through the dictionary and end up with just the names of the capital cities in the relevant array.
For example, after you execute the code you write, europeanCapitals will have the values ["Vaduz", "Brussels", "Sofia"] (not necessarily in that order).
To do this you're going to use a switch statement and switch on the key. For cases where the key is a European country, append the value (not the key!) to the europeanCapitals array. For keys that are Asian countries, append the value to asianCapitals and finally for the default case, append the values to otherCapitals.
I've already set up the for in loop for you so jump right in!
var europeanCapitals: [String] = []
var asianCapitals: [String] = []
var otherCapitals: [String] = []
let world = [
"BEL": "Brussels",
"LIE": "Vaduz",
"BGR": "Sofia",
"USA": "Washington D.C.",
"MEX": "Mexico City",
"BRA": "Brasilia",
"IND": "New Delhi",
"VNM": "Hanoi"]
for (key, value) in world {
// Enter your code below
// End code
}
3 Answers
Sam Chaudry
25,519 PointsHi William
I've just run this in a playground here's what you are after
var europeanCapitals: [String] = [] var asianCapitals: [String] = [] var otherCapitals: [String] = []
let world = [ "BEL": "Brussels", "LIE": "Vaduz", "BGR": "Sofia", "USA": "Washington D.C.", "MEX": "Mexico City", "BRA": "Brasilia", "IND": "New Delhi", "VNM": "Hanoi"]
for (key, value) in world {
switch key {
case "BEL", "BGR","LIE" :
europeanCapitals.append(value)
case "IND","VNM":
asianCapitals.append(value)
default:
otherCapitals.append(value)
}
}
You are switching on the keys and they are the conditions that you are testing against. So create you 3 cases one European, one Asian, one Other (This your default). Then all you are doing is seeing if this case exists and if it does then run append it to the array.
The first case is
["Vaduz", "Brussels", "Sofia"]
The second case is
["Hanoi", "New Delhi"]
The default/other is:
["Mexico City", "Brasilia", "Washington D.C."]
Michael Dussie
1,891 Pointsvar europeanCapitals: [String] = []
var asianCapitals: [String] = []
var otherCapitals: [String] = []
let world = [
"BEL": "Brussels",
"LIE": "Vaduz",
"BGR": "Sofia",
"USA": "Washington D.C.",
"MEX": "Mexico City",
"BRA": "Brasilia",
"IND": "New Delhi",
"VNM": "Hanoi"]
for (key, value) in world {
// Enter your code below
switch key {
case "BEL", "LIE", "BGR":
europeanCapitals.append(value)
case "IND", "VNM":
asianCapitals.append(value)
default: otherCapitals.append(value)
}
// End code
}
Carlos Salame
Full Stack JavaScript Techdegree Student 13,011 Pointswhy should i put (Value) after the .append
Kathleen Hang
4,062 PointsThis portion of the swift documentation helped me understand why we append (value). (value) contains the capital names we want to insert into our empty arrays. Just understanding what a dictionary is and how its syntax differs from an array helped me comprehend this.
You can also iterate over a dictionary to access its key-value pairs. Each item in the dictionary is returned as a (key, value) tuple when the dictionary is iterated, and you can decompose the (key, value) tuple’s members as explicitly named constants for use within the body of the for-in loop. Here, the dictionary’s keys are decomposed into a constant called animalName, and the dictionary’s values are decomposed into a constant called legCount.
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}
// ants have 6 legs
// spiders have 8 legs
// cats have 4 legs
William Hartvedt Skogstad
5,857 PointsWilliam Hartvedt Skogstad
5,857 PointsAha! A switch statement INSIDE a for in loop was the answer! thanks a lot :)