如何编写将列表添加到字典的函数?

时间:2019-03-22 06:11:02

标签: python list function dictionary

这个奇妙的社区中忙碌的程序员。

我正试图从一本名为《自动化无聊的东西》的书中完成一项任务。在这里,我试图将这个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)

3 个答案:

答案 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()

干杯!