对字典中的总值求和的函数

我有一个包含多个条目的 dict 值。


   inventory = {847502: ['APPLES 1LB', 2, 50], 847283: ['OLIVE OIL', 1, 100], 839529: ['TOMATOS 1LB', 4, 25], 

                 483946: ['MILK 1/2G', 2, 50], 493402: ['FLOUR 5LB', 2, 50], 485034: ['BELL PEPPERS 1LB', 3, 50]}

我想创建一个函数来获取价值项目的总数,即。sum((2*50)+ (1*100) etc...) 我想我快到了,但这似乎只添加了第一个值....


def total_and_number(dict):

    for values in dict.values():

        #print(values[1]*values[2])

        total =0

        total += (values[1]* values[2])

        return(total)



total_and_number(inventory)


有只小跳蛙
浏览 180回答 3
3回答

一只名叫tom的猫

Return 和 total 行错位。这将返回 650。inventory = {847502: ['APPLES 1LB', 2, 50],             847283: ['OLIVE OIL', 1, 100], 839529: ['TOMATOS 1LB', 4, 25],              483946: ['MILK 1/2G', 2, 50], 493402: ['FLOUR 5LB', 2, 50],             485034: ['BELL PEPPERS 1LB', 3, 50]}def total_and_number(dict):    total = 0    for values in dict.values():        total += values[1]*values[2]    return(total)total_and_number(inventory)

守候你守候我

看起来每个值都是一个列表(尽管它可能应该是一个元组):itemname, qty, eachprice所以它应该很容易迭代并直接求和:sum(qty*eachprice for _, qty, eachprice in inventory.values())

守着星空守着你

用:def total_and_number(d):    tot = 0    for k, v in d.items():        tot += v[1]*v[2]    return tottotal_and_number(inventory)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python