Read CSV Records as Dictionaries (Solution)
00:00
Reading a CSV file containing a headline into a list of dictionaries requires creating a DictReader
object. But first, we need to include the usual bit of boilerplate code that we’ve been typing over and over again.
00:14
At this point, you should know the drill. We’ll start by importing the necessary modules—that is, the csv
module and the Path
object from pathlib
.
00:25
Now we can define a Path
instance pointing to the favorite_colors.csv
file in the home directory. If you haven’t completed the previous exercise, then you can find the required CSV file in the supporting materials available for download.
00:41
Alternatively, you can create the file manually and copy its content from the slides. We can now open the file for reading using the with
statement, remembering to set the character encoding and disable the universal newline.
01:02
The next step is to create a DictReader
instance and wrap our file object with it.
01:09
But what about the headline? When creating a DictWriter
object, we specify the column names through the optional fieldnames
parameter.
01:17
With a DictReader
object, however, things look a bit more complicated because the underlying CSV file may or may not come with a header line.
01:27 When it does, the reader object can infer the corresponding column names from the first row, assuming it’s the header line. Otherwise, you must specify the field names explicitly when creating the reader object.
01:40
When you do, the fieldnames
parameter takes precedence and the headline present in the file will be treated as regular data. So you should generally know if your CSV file includes a headline or not before proceeding to avoid any confusion or problems in your data processing.
01:59
In this case, I’ll let the reader perform the inference by not specifying the column names myself because I know that our file comes with a headline. Now, the DictReader
happens to be an adapter for the standard CSV reader providing the conversion between the rows and Python dictionaries.
02:18 Therefore, it has the same interface, allowing me to iterate over it. The difference is that each row is a dictionary instead of a list. So I’ll name the variable accordingly.
02:31
That’s for row in reader
, and since the rows are dictionaries, I can append them to my favorite_colors
.
02:56
save the code as exercise_02_04
and run it.
03:04 The actual output agrees with what the instructions are telling us.
03:10 Okay, that was the last review exercise in this course before the final challenge. I hope that you’re ready to put all your knowledge and skills to the test.
Become a Member to join the conversation.