Python 3代码按预期工作,但我不明白为什么

时间:2017-04-13 18:50:03

标签: python python-3.x

代码:

inv = {'arrow': 12, 'gold coin': 42, 'rope': 1, 'torch': 6, 'dagger': 1}

def show_inv():
    print('inventory:')
    item_total = 0
    for k, v in inv.items():
        print(str(v)+ ' ' + (k))
        item_total = item_total + v
    print('total number of items: ' + str(item_total))

show_inv()

结果(按预期):

  

清单:

     

12箭头

     42金币

     

1根绳子

     

6火炬

     

1 dagger

     

项目总数:62

但是怎么做

item_total = item_total + v

给我正确的总值?

编辑:为什么单独打印(str(v))总是给我“匕首”键的价值?

1 个答案:

答案 0 :(得分:2)

这里的重要部分是:

for k, v in inv.items():
  # do stuff

当您在字典的for迭代器上使用items - 循环时,它将循环遍历该字典的keyvalue。由于您有从名称到值的字典,valuesv)将是每个项目的值。添加所有这些可以为您提供正确的总价值。

该行

item_total = item_total + v 

为广告资源中的每个项目运行一次,因为它位于库存上运行的for循环内。

阅读Iterators in Python可能有助于您了解其工作原理。