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

时间:2018-11-29 04:33:01

标签: python shopping-cart

我有一个字典,其中包含多个输入值。

   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)等) 我想我快到了,但这似乎只会加上第一个值。...

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)

6 个答案:

答案 0 :(得分:2)

返回和总行放错了位置。返回650。

y_predict = model.predict(x)
y_predict = map(inverse_transform, y_predict)

答案 1 :(得分:1)

使用:

def total_and_number(d):
    tot = 0
    for k, v in d.items():
        tot += v[1]*v[2]
    return tot

total_and_number(inventory)

答案 2 :(得分:1)

您应该为循环代码定义变量合计。

result = sum([ value[1]*value[2] for value in inventory.values()]

def total_and_number(dict):
    total =0
    for values in dict.values():
       #print(values[1]*values[2])
       total += (values[1]* values[2])
    return total
total_and_number(inventory)

答案 3 :(得分:1)

尝试一下:

x = {
    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]
}

print(sum([x[i][1]*x[i][2] for i in x.keys()]))

输出:

C:\Users\Desktop>py x.py
650

编辑:对于您自己的代码,您需要从循环中取出total=0return total

def total_and_number(dict):
    total = 0
    for values in dict.values():
        total += (values[1]*values[2])
    return(total)


print(total_and_number(x))

输出:

C:\Users\Desktop>py x.py
650

答案 4 :(得分:1)

每个值看起来都是一个列表(尽管可能应该是一个元组):

itemname, qty, eachprice

因此迭代和直接求和应该足够简单

sum(qty*eachprice for _, qty, eachprice in inventory.values())

答案 5 :(得分:0)

您应该尝试通过其键值访问这些项目:

def total_and_number(dictis):
    total = 0
    for key in list(dictis.keys()):
        print(key)
        total += (dictis[key][1]*dictis[key][2])
    return(total)

它会返回您所需的期望值。