
2.9.1 Lesson 2 Practice Exercise 1 Solution
1 2 3 4 5 6 7 | features = [ { "id" : "A" , "lat" : "23.32" , "lon" : "-54.22" }, { "id" : "B" , "lat" : "24.39" , "lon" : "53.11" }, { "id" : "C" , "lat" : "27.98" , "lon" : "-54.01" } ] featuresAsTuples = [ ( "Feature " + feat[ 'id' ], float (feat[ 'lat' ]), float (feat[ 'lon' ]) ) for feat in features if float (feat[ 'lon' ]) < 0 ] print (featuresAsTuples) |
Let's look at the components of the list comprehension starting with the middle part:
1 | for feat in features |
This means we will be going through the list features using a variable feat that will be assigned one of the dictionaries from the features list. This also means that both the if-condition on the right and the expression for the 3-tuples on the left need to be based on this variable feat.
1 | if float (feat[ 'lon' ]) < 0 |
Here we implement the condition that we only want 3-tuples in the new list for dictionaries that contain a lon value that is < 0.
1 | ( "Feature " + feat[ 'id' ], float (feat[ 'lat' ]), float (feat[ 'lon' ]) ) |
Finally, this is the part where we construct the 3-tuples to be placed in the new list based on the dictionaries contained in variable feat. It should be clear that this is an expression for a 3-tuple with different expressions using the values stored in the dictionary in variable feat to derive the three elements of the tuple. The output produced by this code will be:
Output: [('Feature A', 23.32, -54.22), ('Feature C', 27.98, -54.01)]