将嵌套字典值与另一个字典值相乘

时间:2019-05-08 20:54:34

标签: python

我有两个字典,其中一个是嵌套的。

 grocery_list = {"Jane" : {"Oranges": 2 , "Cucumbers" : 2, "Onions": 5 , 
 "Tomatoes" : 4} , "Steve" : {"Oranges": 5 , "Cucumbers" : 4, "Onions": 6 
 }, "John" : {"Oranges": 8 , "Cucumbers" : 10, "Tomatoes" : 9}}

 price_list = {"Oranges" : .89, "Cucumbers" : 0.50 , "Onions": 2.00 , 
 "Tomatoes" : 1.00}

如何使用用户名作为输入来创建输出{User:(股票*价格)}

我知道有多种方法可以做到这一点。根据我在网上收集的信息,字典理解或for in loop可能有效,但我似乎可以使用price_list中的值来计算杂货店清单中的嵌套库存值

预期结果应该是:

function(User)

Output {Jane:16.78}

3 个答案:

答案 0 :(得分:1)

尝试一下:

{user: sum([v*price_list[k] for k, v in purchase.items()]) for user, purchase in grocery_list.items()}

输出:

# Result: {'Jane': 16.78, 'Steve': 18.45, 'John': 21.12} #

答案 1 :(得分:0)

我将使用下标运算符获取用户的购物清单,然后求和一个生成器表达式,该表达式将产品名称替换为其价格并将其乘以金额:

def sumUser(user):
    return {user : sum((price_list[p] * a for (p, a) in grocery_list[user].items()))}

答案 2 :(得分:0)

做到这一点:

 grocery_list = {"Jane" : {"Oranges": 2 , "Cucumbers" : 2, "Onions": 5 , 
 "Tomatoes" : 4} , "Steve" : {"Oranges": 5 , "Cucumbers" : 4, "Onions": 6 
 }, "John" : {"Oranges": 8 , "Cucumbers" : 10, "Tomatoes" : 9}}

 price_list = {"Oranges" : .89, "Cucumbers" : 0.50 , "Onions": 2.00 , 
 "Tomatoes" : 1.00}




def get_total(User):
    user=grocery_list[User]
    total={User:sum({k:(user[k]*price_list[k]) for k in user.keys()}.values())}
    return total

get_total('Jane')

输出:

{'Jane': 16.78}

让我知道是否有任何疑问