[英]how to use an item from a dictionary in a function and then loop the function until it goes through the whole dictionary in python
[英]Python - how does a variable from this function progress through a dictionary?
我很難理解下面代碼的一部分。 我能夠在在線課程中正確理解它,所以我不是在尋求幫助來完成它,只是理解這一點:在最后一段代碼中,我對x和food的工作方式感到困惑。 x 如何處理價格中的項目?
shopping_list = ["banana", "orange", "apple"]
stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15
}
prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3
}
def compute_bill(food):
total = 0
for x in food:
total = total + prices[x]
return total
Python dictionaries
(和其他 python 數據結構)實現了所謂的iterator
模式,它按順序一次取一個項目,直到遍歷整個數據結構。
字典實現了一個 tp_iter 槽,它返回一個高效的迭代器,該迭代器對字典的鍵進行迭代。 在這樣的迭代期間,不應修改字典,除非允許為現有鍵設置值(刪除或添加不允許,update() 方法也不允許)。 這意味着我們可以寫
for k in dict: ...
這相當於,但比
for k in dict.keys(): ...
只要不違反對字典修改的限制(通過循環或另一個線程)。
代碼: for x in food:
只需在 python dict
中初始化iterator
並重復調用它以獲取下一項直到最后一項。
這就是它在 python(以及其他語言)中的工作方式。 Python 內部知道dict
實現了一個iterator
, for
循環在下面調用這個迭代器。
prices
是一個字典,是鍵(香蕉、蘋果、...)到值(4、2、...)的映射。
for x in food
意思是“對於提供的名為food
的列表中的每個項目,給它一個臨時變量賦值x
並用x
做一些事情。”
total = total + prices[x]
表示“將total
的當前值分配給項目x
的價格(從價格中查找)”。 對於food
中的第一項(在本例中為香蕉),您正在尋找相應的價格prices
(即 4)。 因此,您實際上是在說total = 0 + 4
,然后轉到food
中的下一項。 由於total
現在設置為 4,因此您的分配變為total = 4 + price['orange']
或4 + 1.5
。 列表完全迭代后,您就有了一個total
(在您的示例中為 7.5)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.