добавление к списку из словаря?

#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