如何在 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

 choice = raw_input("Do you want to sell?")
 if (choice in 'yesYES'):
        for i in range(n):
             print("Which book do you want to sell: ", book_shop)
             ch1 = raw_input("Enter your choice: ")
             if(book_shop.keys()[i] == ch1):
                    book_shop.keys()[i] = (book_shop.values()[i]-1)
                    break

 print(book_shop)

我想以最简单的方式解决问题。我错过了代码中的任何逻辑或任何行吗?

原文由 Animeartist 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 290
2 个回答

那么你可以通过引用键直接从值中减去。我认为这更简单。

 >>> books = {}
>>> books['book'] = 3
>>> books['book'] -= 1
>>> books
{'book': 2}

在你的情况下:

 book_shop[ch1] -= 1

原文由 Christian W. 发布,翻译遵循 CC BY-SA 3.0 许可协议

d = {'A': 1, 'B': 5, 'C': 2}
d.update({'A': 2})

打印(d)

 {'A': 2, 'B': 5, 'C': 2}

原文由 laplace 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题