Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—这个函数中的变量如何在字典中前进?_Python_Concept - Fatal编程技术网

Python—这个函数中的变量如何在字典中前进?

Python—这个函数中的变量如何在字典中前进?,python,concept,Python,Concept,我很难理解下面代码的一部分。我在一个在线课程中得到了正确的答案,所以我不是在寻求帮助来完成它,只是理解了这一点:在最后一段代码中,我对x和食物如何工作感到困惑。x是如何在价格中通过项目的 shopping_list = ["banana", "orange", "apple"] stock = { "banana": 6, "apple": 0, "orange": 32, "pear": 15 } prices = { "banana": 4, "apple": 2

我很难理解下面代码的一部分。我在一个在线课程中得到了正确的答案,所以我不是在寻求帮助来完成它,只是理解了这一点:在最后一段代码中,我对x食物如何工作感到困惑。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
字典(和其他Python数据结构)实现所谓的an,它一次按顺序获取一个项,直到它遍历整个数据结构

字典实现一个tp_iter插槽,该插槽返回一个有效的 迭代字典键的迭代器。在这种情况下 迭代时,不应修改字典,但该设置除外 允许现有密钥的值(不允许删除或添加) 不是,update()方法也不是)。这意味着我们可以写作

对于dict中的k:…

这相当于,但比

用于dict.keys()中的k:…

只要对词典的修改有限制(或 由循环或另一个线程执行)的操作,则不会违反

代码:
for x in food:
只需在python
dict
中初始化
迭代器
,并重复调用它以获取下一项,直到最后一项


这就是它在python(以及其他语言)中的工作方式。Python从内部知道,
dict
实现了一个
迭代器,而
for
循环在下面调用这个迭代器。

prices
是一个字典,是键(香蕉、苹果等)到值(4、2等)的映射

for x in food
表示“对于所提供列表中名为
food
的每个项目,为其分配一个临时变量
x
,并使用
x
执行操作”


total=total+prices[x]
表示“将
total
的当前值添加到物品
x
的价格中(从价格中查找)”。对于
食品
(本例中为香蕉)中的第一项,您将在
价格
(即4)中查找相应的价格。因此,您实际上是说
total=0+4
,然后转到
食品中的下一项。由于
total
现在设置为4,您的作业将变为
total=4+price['orange']
,或
4+1.5
。一旦列表被完全迭代,您就有了一个
total
sum(在您的示例中为7.5)。

您不了解哪一部分?
for
循环在Python中是如何工作的,或者是如何访问
字典
中的项目?哦,好的,谢谢!我很困惑,它怎么知道要把x从价目表中发送出去。