簡體   English   中英

如何在 Python 中更新字典中鍵的值?

[英]How to update the value of a key in a dictionary in 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)

我想以最簡單的方式解決問題。 我是否錯過了代碼中的任何邏輯或任何行?

好吧,您可以通過引用鍵直接從值中減去。 在我看來哪個更簡單。

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

在你的情況下:

book_shop[ch1] -= 1
d = {'A': 1, 'B': 5, 'C': 2}
d.update({'A': 2})

打印(d)

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

您正在修改列表book_shop.values()[i] ,該列表未在字典中更新。 每當您調用values()方法時,它都會為您提供字典中可用的值,在這里您不會修改字典的數據。

n = eval(input('Num books: '))
books = {}
for i in range(n):
    titlez = input("Enter Title: ")
    copy = eval(input("Num of copies: "))
    books[titlez] = copy

prob = input('Sell a book; enter YES or NO: ')
if prob == 'YES' or 'yes':
    choice = input('Enter book title: ')
    if choice in books:
        init_num = books[choice]
        init_num -= 1
        books[choice] = init_num
        print(books)

您可以簡單地為現有鍵指定另一個值:

t = {}
t['A'] = 1
t['B'] = 5
t['C'] = 2

print(t)

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

現在讓我們更新其中一個鍵:

t['B'] = 3

print(t)

{'A': 1, 'B': 3, 'C': 2}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM