Как обновить значение ключа в словаре на 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
Я хотел бы решить проблему самым простым способом. Я пропустил какую-нибудь логику или строку в коде?
2 ответов
Ну, вы можете напрямую вычитать из значения, просто сославшись на ключ. Что на мой взгляд проще.
>>> books = {}
>>> books['book'] = 3
>>> books['book'] -= 1
>>> books
{'book': 2}
в вашем случае:
book_shop[ch1] -= 1
вы изменяете список book_shop.values()[i]
, который не обновляется в словаре. Всякий раз, когда вы называете values()
метод, он даст вам значения, доступные в словаре, и здесь вы не изменяете данные словаря.