[英]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.