Python read csv into dictionary rows

Read a csv with headers in python into dictionary rows mapping to the headers.

first,last,sex
Liberia,Mariana,female
Eligius,Prosperus,male
Florina,Xenia,female

Use csv.DictReader to read each row into a dictionary.

import csv

with open('data.csv') as f:
    reader = csv.DictReader(f)
    print('headers: {}'.format(reader.fieldnames))
    for row in reader:
        print(row)
$ python read_csv.py 
headers found: ['first', 'last', 'sex']
{'sex': 'female', 'last': 'Mariana', 'first': 'Liberia'}
{'sex': 'male', 'last': 'Prosperus', 'first': 'Eligius'}
{'sex': 'female', 'last': 'Xenia', 'first': 'Florina'}

Alternatively, use csv.reader to read the rows.

import csv

with open('data.csv') as f:
    reader = csv.reader(f)
    headers = reader.next()
    print('headers found: {}'.format(headers))
    for row_list in reader:
        row_dict = dict(zip(headers, row_list))
        print(row_dict)

You can also read the next line by doing either reader.next() or next(reader):

headers = reader.next()
headers = next(reader)

Comments

Leave a Reply