[英]Confused on dictionary input example in Python Crash Course
我正在學習 Python 速成課程,在第 8 章中,作者給出了以下代碼作為用用戶輸入填充字典的示例。 我對他將響應存儲到字典中的步驟感到困惑,在我看來,他似乎只保存了一個“響應”,它是鍵“名稱”下的“響應”字典中的不可變數據. 我錯過了如何將名稱輸入和響應輸入放入字典中。
這對我來說似乎沒有意義,但這就是我迄今為止對這段旅程的喜愛,在看似無意義的事情中找到意義。 謝謝你幫我揭開這個世界的神秘面紗。
responses = {}
# Set a flag to indicate that polling is active.
polling_active = True
while polling_active:
#Prompt for the person's name and response.
name = input("\nWhat is your name? ")
response = input("Which mountain would you like to climb someday? ")
#Store the response in the dictionary:
responses[name] = response
#Find out if anyone else is going to take the poll.
repeat = input("Would you like to let another person respond? (yes/no) ")
if repeat == 'no':
polling_active = False
#Polling is complete. Show the results.
print("\n--- Poll Results ---")
for name, response in responses.items():
print(name + " would like to climb " + response + ".")
在最基本的解釋中,字典將任意值與任意鍵相關聯。 因此,作者實際所做的是將用戶的響應與他們的姓名相關聯。 作者通過使用名稱作為鍵和響應作為值來做到這一點。 像這樣使用字典是相當普遍的。
如果要檢索數組中的值,則必須知道它的鍵。 但是,您可以使用dictionary.items()
檢索所有鍵值對。 這樣,作者可以獲得這兩個相關的數據(名稱和響應)。
如果這回答了您的問題,您可以將其標記為正確。 如果您覺得這個答案需要更多解釋,您也可以發表評論。
字典的特點是您可以像這樣更改鍵的值: dictionary[key] = value
。 如果密鑰不存在,它將簡單地創建一個新密鑰。 您不需要任何append
,例如用於列表的 append 。 您寫responses[name] = response
的那一行是有效的,因為它停留在一個while 循環中。 循環再次運行后,它會詢問另一個輸入並將舊name
替換為新name
,並將舊response
替換為新response
。 總之,如果名稱不在字典中,則每次循環運行時都會添加名稱和響應。 如果名稱在那里,那么如果它與舊的不同,它將簡單地更改其值response
。
這回答了你的問題了嗎?
name
和response
是用輸入數據填充的變量名稱,比如說'John'
和'Kalimanjaro'
。
現在, 'John'
和'Kalimanjaro'
確實是不可變的,但這並不意味着您不能在下一個循環中替換存儲在name
和response
中的值。 如果需要,您可以為name
指定一個新值,也可以是不可變的。
一種可能的混淆來源可能是您開始使用諸如responses['John'] = 'Kalimanjaro'
類的語句來學習字典,其中鍵和值都是字符串。 現在您正在做responses[name] = response
(在name
和response
周圍沒有引號)。 因此,您創建了一個名為任何存儲在name
中的鍵和一個包含任何存儲在response
中的值。
如果在下一次迭代中name
的值被替換為'Maria'
並且response
變為'Andes'
,則新的responses[name] = response
將等效於responses['Maria'] = 'Andes'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.