我是编程新手,目前正在使用Python(第二版)自动完成无聊的工作。在第5章中,有一个练习问题,涉及使用字典创建一个幻想游戏清单。我已经用其他人的答案完成了这个问题,但是,我不理解代码的特定部分
此代码表示将新的“dragonLoot”列表添加到当前库存,即字典“inv”。这是我的密码:
def displayInventory(inventory):
print("Inventory:")
item_total = 0
for k, v in inventory.items():
item_total = item_total + v
print(str(v) + " " + k)
print("Total number of items: " + str(item_total))
def addToInventory(inventory, addedItems):
for i in addedItems:
inventory.setdefault(i, 0)
inventory[i] = inventory[i] + 1
return inventory
inv = {'gold coin': 42, 'rope': 1}
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
inv = addToInventory(inv, dragonLoot)
displayInventory(inv)
我的问题与这一具体部分有关:
def addToInventory(inventory, addedItems):
for i in addedItems:
inventory.setdefault(i, 0)
inventory[i] = inventory[i] + 1
return inventory
当输入“inventory.setdefault(i,0)”,然后输入“inventory[i]=inventory[i]+1”时,此代码如何允许将列表添加到字典中
多谢各位
让我们将
addToInventory
函数中的循环分解。首先我们有此指令表示“如果} 的返回值),它相当于
i
键不在inventory
字典中,请将其设置为0
。在本例中(因为我们不使用^{接下来是这个指令
它基本上是一个incrementation,,也就是说,为
i
键的inventory
值加1另一种解释是,
for
循环是“对于addedItems
中的每一项,将inventory
字典中的对应值设置为零(如果尚未存在),然后将其递增”读完本书后,您可能会从花一些时间检查Python标准库的^{} 模块中获益,尤其是^{} 和^{} 模块,它们更适合您尝试实现的逻辑
如果尚未设置字典密钥,则这是针对
KeyError
的保护。您还可以使用标准库中collections模块中的defaultdict考虑以下
即使库存为空,您也可以获得正确的输出。这是因为
setdefault
确保在密钥不存在时使用默认值创建密钥。它使您不必使用if/then
语句来判断该键是否已在dict中现在,在不使用
setdefault
行的情况下尝试相同的函数现在看看如果使用
defaultdict
会发生什么相关问题 更多 >
编程相关推荐