Comment mettre à jour la valeur d'une clé dans un dictionnaire en Python?
J'ai un dictionnaire qui représente un magasin de livre. Les clés représentent le titre de l'ouvrage et les valeurs représentent le nombre de copies du livre présent. Lorsque les livres sont vendus dans le magasin,le nombre de copies du livre doit diminuer.
J'ai écrit un code pour diminuer le nombre de copies de l'ouvrage, mais sur l'impression du dictionnaire après la mise à jour, j'obtiens l'initiale dictionnaire et non pas la mise à 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
J'aimerais résoudre le problème de la manière la plus simple possible. Ai-je manqué aucune logique ou de toute ligne dans le code?
OriginalL'auteur Animeartistfromhell7 | 2016-12-09
Vous devez vous connecter pour publier un commentaire.
Ainsi vous pouvez directement retirée de la juste valeur par le référencement de la clé. Ce qui à mon avis est plus simple.
Dans votre cas:
Modifier pour
book_shop[ch1] -= 1
Merci,ça a fonctionné. Pourriez-vous me dire quelle est l'erreur dans mon code??
Le référencement de votre dicts par
dict_keys()[index]
est un peu bancale, probablement quelque chose à voir avec cela. Par ailleurs, en python3 ce type d'accès n'est plus possible, donc c'est probablement une bonne idée juste de l'indice de directement via les touches et de modifier directement les valeurs comme indiqué dans ma réponse.J'utilise python 2.7, et le référencement dictionnaire à l'aide de dict.keys()[index] ne fonctionne pas dans cela aussi. Donc, cette ligne: book_shop.keys()[i]=(book_shop.les valeurs de()[i]-1) n'est pas valide?
OriginalL'auteur Christian W.
Vous êtes à la modification de la liste
book_shop.values()[i]
, ce qui n'est pas mis à jour dans le dictionnaire. Chaque fois que vous appelez lavalues()
méthode, il vous donnera les valeurs disponibles dans le dictionnaire, et ici, vous n'êtes pas modifier les données du dictionnaire.OriginalL'auteur Nikhil Sagotiya
OriginalL'auteur vic