Open In App

Python – Write dictionary of list to CSV

Last Updated : 12 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will discuss the practical implementation of how to write a dictionary of lists to CSV.

We can use the csv module for this. The csvwriter file object supports three methods such as csvwriter.writerow(), csvwriter.writerows(), csvwriter.writeheader(). 

Syntax:

csv.writer(csvfile, dialect='excel')

Parameters:

  • csvfile: A file object with write() method.
  • dialect (optional): Name of the dialect to be used.

Method 1 : Using csv.writerow() 

To write a dictionary of list to CSV files, the necessary functions are csv.writer(), csv.writerow(). This method writes a single row at a time. Field rows can be written using this method.

Syntax :

csvwriter.writerow(row)

Example 1:

Python3




# import the csv package
import csv
 
# create a csv file with desired name
#and store it in a variable
with open('test.csv', 'w') as testfile:
   
    # store the desired header row as a list
    # and store it in a variable
    fieldnames = ['first_field', 'second_field', 'third_field']
     
    # pass the created csv file and the header
    # rows to the Dictwriter function
    writer = csv.DictWriter(testfile, fieldnames=fieldnames)
     
    # Now call the writeheader function,
    # this will write the specified rows as
    # headers of the csv file
    writer.writeheader()


Output:

Alternatively, a dictionary of lists can be converted to a CSV file using only the csv.writerow() function,  just by iterating through each key-value pair in the dictionary as shown

Example 2:

Python3




# create a dictionary of list
test = {'Age': [52, 24, 31, 47, 51, 61],
        'Sex': ['F', 'M', 'M', 'F', 'F', 'M'],
        'height': [143, 163, 144, 154, 174, 177],
        'weight': [77, 66, 59, 53, 71, 63], }
 
# create a csv file called test.csv and
# store it a temp variable as outfile
with open("test.csv", "w") as outfile:
   
   # pass the csv file to csv.writer.
    writer = csv.writer(outfile)
     
    # convert the dictionary keys to a list
    key_list = list(test.keys())
     
    # find the length of the key_list
    limit = len(key_list)
     
    # the length of the keys corresponds to
    # no. of. columns.
    writer.writerow(test.keys())
     
    # iterate each column and assign the
    # corresponding values to the column
    for i in range(limit):
        writer.writerow([test[x][i] for x in key_list])


Output:

Method 2 : Using csv.writerows() 

To write a dictionary of list to CSV files, the necessary functions are csv.writer(), csv.writerows(). This method writes all elements in rows (an iterable of row objects as described above) to the writer’s file object.

Syntax

csvwriter.writerows(rows)

Example 1:

Python3




# import the csv package
import csv
 
# create a file called test.csv
# and store it in a temporary variable
with open('test.csv', 'w') as testfile:
   
    # pass the temp variable to csv.writer
    # function
    csvwriter = csv.writer(testfile)
     
    # pass the row values to be stored in
    # different rows
    csvwriter.writerows([['row1'], ['row2'], ['row3'],
                         ['row4'], ['row5'], ['row6']])


Output:

Example 2:

 Here we are going to create a csv file  test.csv and store it in a variable as outfile.

Python3




# create a dictionary of list
test = {'Age': [52, 24, 31, 47, 51, 61],
        'Sex': ['F', 'M', 'M', 'F', 'F', 'M'],
        'height': [143, 163, 144, 154, 174, 177],
        'weight': [77, 66, 59, 53, 71, 63], }
 
# create a csv file  test.csv and store
# it in a variable as outfile
with open("test.csv", "w") as outfile:
 
    # pass the csv file to csv.writer function.
    writer = csv.writer(outfile)
 
    # pass the dictionary keys to writerow
    # function to frame the columns of the csv file
    writer.writerow(test.keys())
   
    # make use of writerows function to append
    # the remaining values to the corresponding
    # columns using zip function.
    writer.writerows(zip(*test.values()))


Output:

Method 3 : Using csv.writeheader() 

This method writes a row with the field names specified, as header to the csv.dictwriter object.

Syntax

csvwriter.writeheader()

Example:

Python3




# import the csv package
import csv
 
# create a csv file with desired name
#and store it in a variable
with open('test.csv', 'w') as testfile:
   
    # store the desired header row as a list
    # and store it in a variable
    fieldnames = ['first_field', 'second_field', 'third_field']
     
    # pass the created csv file and the header
    # rows to the Dictwriter function
    writer = csv.DictWriter(testfile, fieldnames=fieldnames)
     
    # Now call the writeheader function,
    # this will write the specified rows as
    # headers of the csv file
    writer.writeheader()


Output:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads