Python计算字典中的总项目数

时间:2017-03-25 19:28:54

标签: python list dictionary count

所以我想要将所有值一起计算,以生成将在列表下方打印的totalItems var。输出给了我5而不是全部反击。有人可以解释我为什么,而不仅仅是给出正确的代码。

stuff = {'coins': 5, 'arrows': 42, 'rope': 1}


def getInvent(inventory):

    itemTotal = 0
    print('Inventory:')
    print(str(stuff['coins']) + '  Coins')
    print(str(stuff['arrows']) + ' Arrows')
    print(str(stuff['rope']) + '  Rope')   

    for k, v in stuff.items():
        itemTotal = itemTotal + v
        print('Total number of items: ' + str(itemTotal)) 
        return itemTotal

getInvent(stuff)

2 个答案:

答案 0 :(得分:2)

您可以使用sum()dict.values()将for循环变为单行:

>>> sum(stuff.values())
48

<强>解释

stuff.values()为您提供字典中所有值的列表:

>>> stuff.values()
[1, 5, 42]

sum()将可迭代的所有项目(如列表)加在一起:

>>> sum([1, 5, 42])
48

完整示例:

stuff = {'coins': 5, 'arrows': 42, 'rope': 1}

def getInvent(inventory):
    print('Inventory:')
    print(str(stuff['coins']) + '  Coins')
    print(str(stuff['arrows']) + ' Arrows')
    print(str(stuff['rope']) + '  Rope')   

    itemTotal = sum(inventory.values())
    print('Total number of items: ' + str(itemTotal)) 
    return itemTotal

getInvent(stuff)

答案 1 :(得分:1)

你不应该在循环中return,因为在这种情况下它会立即返回(在循环的第一次迭代中)。相反,将回报放在循环之外。

for k, v in stuff.items():
    itemTotal = itemTotal + v
    print('Total number of items: ' + str(itemTotal)) 
return itemTotal

函数在遇到return语句时会立即返回。因此,在返回值之前,应确保循环完整运行。