2016-12-09 8 views
2

У меня есть словарь, который представляет собой книжный магазин. Ключи представляют название книги, а значения представляют количество экземпляров книги. Когда книги продаются из магазина, количество копий книги должно уменьшаться.Как обновить значение ключа в словаре в Python?

Я написал код для уменьшения количества копий проданной книги, но после печати словаря после обновления я получаю начальный словарь, а не обновленный.

n=input("Enter number of books in shop:") 
book_shop={} #Creating a dictionary book_shop 
#Entering elements into the dictionary 
for i in range(n): 
    book_title=raw_input("Enter book title") 
    book_no=input("Enter no of copies") 
    book_shop[book_title]=book_no 
ch=raw_input("Do you want to sell") 
if (ch in 'yesYES'): 
     for i in range(n): 
      print"which book you want to sell??",book_shop 
      ch1=raw_input("choice") 
      if(book_shop.keys()[i]==ch1): 
        book_shop.keys()[i]=(book_shop.values()[i]-1) 
        break 

print book_shop 

Я хотел бы решить проблему самым простым способом. Я пропустил какую-либо логику или любую строку в коде?

ответ

7

Ну, вы можете напрямую вычитать стоимость, просто ссылаясь на ключ. Что, на мой взгляд, проще.

>>> books = {} 
>>> books['book'] = 3  
>>> books['book'] -= 1 
>>> books 
{'book': 2} 

В вашем случае:

book_shop[ch1] -= 1 
+0

Я изменил строку: book_shop.keys() [i] = (book_shop.values ​​() [i] -1) до book_shop.keys() [i] - = 1, но все же это не кажется работать. – Animeartistfromhell7

+0

Измените это на 'book_shop [ch1] - = 1' –

+0

Спасибо, это сработало. Не могли бы вы рассказать мне, что было ошибкой в ​​моем коде? – Animeartistfromhell7

0

Вы изменяете список book_shop.values()[i], который не получает обновленный в словаре. Всякий раз, когда вы вызываете метод values(), он даст вам значения, доступные в словаре, и здесь вы не изменяете данные словаря.

 Смежные вопросы

  • Нет связанных вопросов^_^