Your best bet would to actually create a dictionary for this data, it is more appropriate than lists of lists.

EXAMPLE:

# The key is the title of the book, or we can create a dict in a dict with title as the key
# It really is up to you as the programmer.
books = {'Godel Escher Bach': {'year': 1979, 'author': 'Douglas Hofstadter'}}
books['Godel Escher Bach'].items()
books['Godel Escher Bach']['year']

That's how you would access the data.

As for assigning the data you would do something like,

Also because we know the data structure we know right where each entry should be.

def get_book_data(bookfile):
with open(bookfile as 'r') as file:
book_dict = dict()
for line in file:
hold = line.split(",")
book_dict[hold[0]] = {'year': int(hold[1]), 'author': hold[2]}
return book_dict
books = get_book_data('books.csv')
# Now we have the book data in a dict which allows us to easily access the information is a useful way.
books
# OUTPUT: {'Godel Escher Bach': {'year': 1979, 'author': ' Douglas Hofstadter'}}

Now that your book data is stored in a dict you can easily convert it back to a csv file or even save the dict directly and load the data that way.

Also even though dicts are typically unordered you can use several built-in tools to order the dicts.

# Sample
from collections import OrderedDict

This part of collections allows you do do all kindsa fun things with dicts.