我有两个字典,其中一个是嵌套的。
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}
答案 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}
让我知道是否有任何疑问