这个奇妙的社区中忙碌的程序员。
我正试图从一本名为《自动化无聊的东西》的书中完成一项任务。在这里,我试图将这个dragonLoot []列表追加到itemsSatchel {}字典中。在将列表更改为字典后,我尝试使用此更新属性,但是失败了,所以我真的不知道该怎么做。帮助!
import pprint
itemsSatchel = {'Arrow': 12,
'Gold Coin': 42,
'Rope': 1,
'Torch': 6,
'Dagger':1}
dragonLoot = ['Gold Coin',
'Gold Coin'
'Dagger'
'Gold Coin',
'Ruby']
def addToSatchel(self):
#This part is my pain in the ___#
def displaySatchel(self):
print("Inventory: ")
itemsCounter = 0
for k,v in itemsSatchel.items() :
pprint.pprint(str(v) + ' ' + str(k))
itemsCounter += v
print('Total number of items: ' + str(itemsCounter))
addToSatchel({dragonLoot})
displaySatchel(itemsSatchel)
答案 0 :(得分:1)
您还可以在此处考虑使用collections.Counter
。可以从dict
或项目列表中对其进行初始化或更新。
from collections import Counter
itemsSatchel = Counter({'Arrow': 12,
'Gold Coin': 42,
'Rope': 1,
'Torch': 6,
'Dagger':1})
dragonLoot = ['Gold Coin', ...]
def addToSatchel(items):
itemsSatchel.update(items)
addToSatchel(dragonLoot)
答案 1 :(得分:0)
首先,删除“ self”参数,这不是类方法,而是功能编程。 现在,如果我理解正确,那么您可以尝试执行以下操作:
def addToSatchel():
for el in dragonLoot:
itemsSatchel[el] = itemsSatche.setdefault(el, 0) + 1
def displaySatchel():
...
...
通话应为:
addToSatchel()
displaySatchel()
答案 2 :(得分:0)
尝试遍历数组中的元素,然后将字典中相同元素的值(如果存在)增加1,或者如果不存在,则将其设置为1。
像这样:
# Hello World program in Python
import pprint
itemsSatchel = {'Arrow': 12,
'Gold Coin': 42,
'Rope': 1,
'Torch': 6,
'Dagger':1}
dragonLoot = ['Gold Coin',
'Gold Coin',
'Dagger',
'Gold Coin',
'Ruby']
def addToSatchel():
for item in dragonLoot:
if item in itemsSatchel:
itemsSatchel[item] += 1
else:
itemsSatchel[item] = 1
def displaySatchel():
print("Inventory: ")
itemsCounter = 0
for k,v in itemsSatchel.items() :
pprint.pprint(str(v) + ' ' + str(k))
itemsCounter += v
print('Total number of items: ' + str(itemsCounter))
addToSatchel()
displaySatchel()
干杯!