J'ai un dictionnaire qui représente une librairie. Les touches représentent le titre du livre et les valeurs représentent le nombre de copies du livre présent. Lorsque des livres sont vendus au magasin, leur nombre doit diminuer.
J'ai écrit un code pour diminuer le nombre de copies du livre vendu, mais en imprimant le dictionnaire après la mise à jour, j'obtiens le dictionnaire initial et non celui mis à jour.
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
Je voudrais résoudre le problème de la manière la plus simple possible. Ai-je oublié une logique ou une ligne dans le code?
Eh bien, vous pouvez directement soustraire de la valeur en référant simplement la clé. Ce qui à mon avis est plus simple.
>>> books = {}
>>> books['book'] = 3
>>> books['book'] -= 1
>>> books
{'book': 2}
Dans ton cas:
book_shop[ch1] -= 1
Vous modifiez la liste book_shop.values()[i]
, qui n'est pas mise à jour dans le dictionnaire. Chaque fois que vous appelez la méthode values()
, elle vous donnera les valeurs disponibles dans le dictionnaire et vous ne modifiez pas ici les données du dictionnaire.