2016-12-09 15 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()メソッドを呼び出すたびに、ディクショナリで使用可能な値が表示されます。ここではディクショナリのデータは変更されません。

関連する問題