#python #list #dictionary
#python #Список #словарь
Вопрос:
Попытка добавить авторов и названия их книг в список внутри словаря, чтобы каждый автор мог поддерживать несколько названий книг. В коде у меня уже есть 3 автора, и у каждого есть 1 название книги, но они должны иметь возможность поддерживать по крайней мере еще 1 название книги.
У меня уже есть значения (названия книг) ключей (авторов), вложенных в список внутри словаря, но я не знаю, как добавить дополнительные значения к существующим ключам, которые находятся внутри существующего списка.
readings = {'George Orwell': ['1984'], 'Harper Lee': ['To Kill a Mockingbird'], 'Paul Tremblay': ['The Cabin at the End of the World']} # list inside of dict.
Мне нужно использовать следующий код, чтобы добавить новые названия книг в список
def add(readings): # appending to list will go here
author = input('nEnter an author: ')
if author in readings: # check if input already inside dict.
bookTitle = readings[author]
print(f'{bookTitle} is already added for this author.n')
else:
bookTitle = input('Enter book title: ')
bookTitle = bookTitle.title()
readings[author] = bookTitle
print(f'{bookTitle} was added.n')
Я ожидаю, что вы не сможете добавить одно и то же название книги дважды и также не сможете добавить одного и того же автора дважды. Ожидается, что я смогу вводить названия книг для существующего автора (или нового автора, который еще не существует) во время работы программы, а затем смогу просматривать всех авторов и названия их книг через «командное меню» (не показано).
Ответ №1:
Ваш рабочий процесс немного не в порядке. После проверки автора, затем проверьте наличие книги в списке книг этого автора. Вы можете добавить название к списку книг с помощью .append
. Попробуйте это:
def add(readings): # appending to list will go here
author = input('nEnter an author: ')
if author in readings: # check if input already inside dict.
books = readings[author]
print(f'Found {len(books)} books by {author}:')
for b in books:
print(f' - {b}')
else:
readings[author] = []
bookTitle = input('Enter book title: ')
bookTitle = bookTitle.title()
if bookTitle in readings[author]:
print(f'{bookTitle} is already added for this author.')
else:
readings[author].append(bookTitle)
print(f'Add "{bookTitle}"')
Ответ №2:
Итак, вы пытаетесь добавить несколько книг к автору, это правильно? Поскольку значения в вашем словаре уже сохранены в виде списка, вы можете попробовать выполнить —
readings[author].append(bookTitle)
вместо
readings[author] = bookTitle