是否有合理的方法在不导入库的情况下添加到字典值?

Arn*_*904 0 python dictionary python-3.x

我正在研究一个练习题,用户将库存保存为字典,例如:

inventory = {
    'rope': 1,
    'gold coin': 42,
    }
Run Code Online (Sandbox Code Playgroud)

然后,我需要通过稍后向库存添加"抢劫"来修改它.

例如:

loot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
Run Code Online (Sandbox Code Playgroud)

我结束了使用很容易做这个Counter范围内collections,像这样:

def add_to_inventory(original_inventory, added_items):
    new_inventory = Counter(original_inventory) + Counter(added_items)
    return(new_inventory)

inventory = add_to_inventory(inventory, loot)
Run Code Online (Sandbox Code Playgroud)

结果是:

45: gold coin
1: rope
1: ruby
1: dagger
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但我想知道.. 有没有合理的方法来解决这个问题,而无需导入库?

jua*_*nza 5

你可以简单地使用dictget方法:

inventory = {'rope': 1, 'gold coin': 42,}
loot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']

for k in loot:
    inventory[k] = inventory.get(k, 0) + 1

print inventory
Run Code Online (Sandbox Code Playgroud)

输出:

{'rope': 1, 'gold coin': 45, 'dagger': 1, 'ruby': 1}
Run Code Online (Sandbox Code Playgroud)

  • 我甚至没想到这个,最好的答案. (2认同)