web-dev-qa-db-fra.com

Comment mettre à jour la valeur d'une clé dans un dictionnaire en Python?

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?

9

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
21
Christian W.

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. 

0
Nikhil Sagotiya