从python中的二维列表中提取数据

时间:2017-10-24 12:18:30

标签: python

您好我正在尝试从二维列表中提取信息。我使用此代码读取数据:

books = []
file_in = open(filename, 'r')

for line in file_in:
    thisline = line.split('\t')
    books.append(thisline)

file_in.close()   
return books        

这只是函数中的代码。当我以前的功能将列表分配给book_data然后我打印book_data我得到这个:

[[' 1876',' Gore Vidal',' Random House',' 4/11 / 1976',' ;小说\ n'],[' 23337','斯蒂芬金'' Scribner'' 11/27/2011' ,'小说\ n'],[' ...和俱乐部的女士们,' Helen Hooven Santmeyer' Putnam', ' 7/8 / 1984',' Fiction \ n'],' 1st to Die',' James Patterson',' ;小,布朗' 3/25 / 2001','小说\ n']

但是当我尝试做类似的事情时:

for book in books:
       print(book)

我在第一本书中得到了回报:[' 1876',' Gore Vidal',' Random House',' 4/11 / 1976','小说\ n']

我需要能够浏览每本书并比较这些书中的项目,但我似乎甚至无法使用循环打印整个列表。我实际上需要能够通过作者名称搜索它。

1 个答案:

答案 0 :(得分:0)

没有错
l = [element_1, element_2, ..., element_n]
for element in l:
    print(element)

语法,正如预期的那样,将逐个打印所有元素,如果每个元素都是一个列表,那么它将逐个打印这些列表中的每一个。

如果你这样做

books = [['1876', 'Gore Vidal', 'Random House', '4/11/1976', 'Fiction\n'], ['23337', 'Stephen King', 'Scribner', '11/27/2011', 'Fiction\n'], ['...and Ladies of the Club', 'Helen Hooven Santmeyer', 'Putnam', '7/8/1984', 'Fiction\n'], ['1st to Die', 'James Patterson', 'Little, Brown', '3/25/2001', 'Fiction\n']]

然后运行你在那里的for-loop, 将打印逐个代表书籍的每个列表。一旦你到达那里(无论你想从哪一个打印出来),这可能是书籍或book_data中的内容的问题。

另外,考虑使用字典来表示每本书,这样你就可以更明确地对其属性进行结构化(而不是仅仅依赖于记住哪个索引号对应于哪个书属性)并执行类似

的操作。
if some_book['author'] == "Dude McAuthorson":
    do_something()