如果'books.txt'
文件包含这些条目:
Title1|Joe Blow
Title2|Jane Doe
Title Number Three|Henry Longwords
你可以建立一个字典,从它那有书名为键和写作者(S)的列表。这是我我说的:
from pprint import pprint
def load_library(filename):
authors_by_book = {}
with open(filename) as file:
for line in file:
author, title = line.strip().split('|')
authors_by_book.setdefault(author, []).append(title)
return authors_by_book
if __name__=='__main__':
authors_by_book = load_library('books.txt')
pprint(authors_by_book)
print()
print('Author(s) of {}: {}'.format('Title2', authors_by_book['Title2']))
输出:
{'Title Number Three': ['Henry Longwords'],
'Title1': ['Joe Blow'],
'Title2': ['Jane Doe']}
Author(s) of Title2: ['Jane Doe']
原因与每个键关联的值是一个列表,是因为一本书可以有多个作者。这可能发生,如果相同的标题在'bookts.txt'
文件出现了不止一次,像这样:
Deep Throat|Bob Woodward
Deep Throat|Carl Bernstein
您可以修改代码以支持其在单个条目中列出多个作者,如:
Deep Throat|Bob Woodward|Carl Bernstein
如果你需要/想要。
将字典映射到作者作为解决方案就足够了? –