为什么这个函数会将我的字典改为None?

时间:2017-07-25 13:58:25

标签: python python-3.x

我正在编写练习程序,将列表中的项目添加到现有词典

def addToInventory(inventory, addedItems):
    for i in addedItems:
        inventory[i] = inventory.get(i,0) + 1

stuff = {'gold coin': 42, 'rope': 1}
loot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
stuff = addToInventory(stuff, loot)

运行此内容后,为什么内容会更改为“无”?

2 个答案:

答案 0 :(得分:3)

事实上,你的代码几乎是好的,你只有一个错误。 python中的字典是可变的,然后当你在你的函数中修改它时你修改你传递的那个作为参数。但是因为你的函数在你写的时候没有返回任何东西:

stuff = addToInventory(stuff, loot)

你将东西分配给无。

你有两个选择: 在函数末尾返回字典:

def addToInventory(inventory, addedItems):
    for i in addedItems:
        inventory[i] = inventory.get(i,0) + 1
    return inventory

或者不要重新分配东西:

 addToInventory(stuff, loot)

答案 1 :(得分:2)

您的函数中没有返回语句,因此它不返回任何内容 - None

解决方案?在函数中添加return语句

def addToInventory(inventory, addedItems):
    for i in addedItems:
         inventory[i] = inventory.get(i,0) + 1
    return inventory