我有一本代表书店的字典。键表示书名,值表示当前书本的份数。当书在商店出售时,书的份数必须减少。
我已经编写了一个代码来减少已售出图书的份数,但在更新后打印字典时,我得到的是初始字典,而不是更新后的字典。
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)我想以最简单的方式解决这个问题。我是否遗漏了代码中的任何逻辑或任何一行?
发布于 2016-12-09 23:31:26
你可以直接从值中减去,只需引用键即可。在我看来这更简单。
>>> books = {}
>>> books['book'] = 3
>>> books['book'] -= 1
>>> books
{'book': 2} 在您的案例中:
book_shop[ch1] -= 1发布于 2021-07-12 22:15:58
d = {'A': 1, 'B': 5, 'C': 2}
d.update({'A': 2})打印(%d)
{'A': 2, 'B': 5, 'C': 2}发布于 2018-02-03 03:33:33
您正在修改列表book_shop.values()[i],该列表未在字典中更新。无论何时调用values()方法,它都会为您提供字典中可用的值,而这里您并没有修改字典的数据。
https://stackoverflow.com/questions/41063744
复制相似问题