我有一个词典:
inv = {"rope" : 1, "torch" : 6, "gold_coin" : 42, "dagger" : 1, "arrow" : 12}
和一个清单:
list = ["gold_coin", "dagger", "gold_coin", "gold_coin", "ruby"]
如何编写一个使用列表中的值来设置inv
dict中的新值的函数来获取此值:
inv = {"rope" : 1, "torch" : 6, "gold_coin" : 45, "dagger" : 2, "arrow" : 12, "ruby" : 1}
答案 0 :(得分:1)
我会做那样的事情:
inv = {"rope" : 1, "torch" : 6, "gold_coin" : 42, "dagger" : 1, "arrow" : 12}
list = ["gold_coin", "dagger", "gold_coin", "gold_coin", "ruby"]
for elem in list:
inv[elem] = inv.setdefault(elem, 0) + 1
{'箭头':12,'匕首':2,' gold_coin':45,' rope':1,&# 39;红宝石':1,'火炬':6}
注意:你不能使用像list这样的关键字作为变量名。更好的变量名称将是inv => inventory和list =>项目
我们可以在几个方面将你的问题分开:
首先,我们使用for循环遍历要添加的项列表。然后我们使用内置方法setdefault of dictionary。它需要检查dict键,如果键不存在则分配默认值,并返回值(默认值为1或inv[key]
)。最后,我们将库存中的项目计数器增加一个。
inv.setdefault("rope", 0)
不会创造"绳索" key并返回1,因为该键已存在于inv字典中。
inv.setdefault("new_key", None)
创建密钥" new_key"如果没有值,则返回None,因为" new_key"在inv字典中不存在。
INV {"绳" :1,"火炬" :6," gold_coin" :42,"匕首" :1,"箭头" :12," new_key":无}`