您好,我正在尝试从二维列表中提取信息。我使用以下代码读取数据:
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时,我得到的结果是:
[ '23337',‘1876’,‘戈尔·维达尔’,‘兰登书屋’,'4/11/1976',‘小说\n’,‘23337’,‘斯蒂芬·金’,‘斯克里布纳’,'11/27/2011',‘小说\n’,‘俱乐部的...and女士’,‘海伦·霍芬·桑特迈尔’,‘普特南’,'7/8/1984',‘小说\n’,‘第一死’,‘詹姆斯·帕特森’,‘小,布朗’,'3/25/2001',‘虚构\n’]
但是当我尝试这样做的时候:
for book in books:
print(book)我在第一本书中得到的回报是:“1876”、“戈尔·维达尔”、“兰登书屋”、“4/11/1976”、“小说\n”。
我需要能够浏览每一本书,并比较这些书中的项目,但我似乎甚至无法使用循环打印整个列表。我实际上需要能够通过作者的名字来搜索它。
发布于 2017-10-24 20:53:11
这并没有什么问题
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循环,它将逐个打印代表一本书的每个列表。也许这是图书或book_data中实际内容的问题,一旦您到达那里(无论您试图从哪个打印)
另外,考虑使用字典来表示每本书,这样您就可以更明确和结构化地了解它的属性(而不是仅仅依靠记住哪个索引号对应哪个书的属性),并执行以下操作
if some_book['author'] == "Dude McAuthorson":
do_something()https://stackoverflow.com/questions/46910416
复制相似问题