将两个词典(价格,股票)的值相乘,然后求和

时间:2013-04-18 15:30:21

标签: python dictionary shopping

我需要将每个键的值相乘,然后将所有值相加以打印单个数字。我知道这可能超级简单,但我卡住了

在我看来,我会用以下内容解决这个问题:

for v in prices:
total = sum(v * (v in stock))
print total

但类似的东西不起作用:)

prices = {
"banana": 4,
"apple": 2,
"orange": 1.5,
"pear": 3 }

stock = {
"banana": 6,
"apple": 0,
"orange": 32,
"pear": 15 }

6 个答案:

答案 0 :(得分:8)

如果你想要个人,你可以使用dict理解:

>>> {k: prices[k]*stock[k] for k in prices}
{'orange': 48.0, 'pear': 45, 'banana': 24, 'apple': 0}

或直接进入总数:

>>> sum(prices[k]*stock[k] for k in prices)
117.0

答案 1 :(得分:2)

如果您已经知道,如何遍历字典,使用键索引字典并理解字典,那将是一个直接的

>>> total = {key: price * stock[key] for key, price in prices.items()}
>>> total
{'orange': 48.0, 'pear': 45, 'banana': 24, 'apple': 0}

即使您的Python实现不提供字典理解(< Py 2.7),您也可以将它作为列表理解传递给dict内置

>>> dict((key, price * stock[key]) for key, price in prices.items())
{'orange': 48.0, 'pear': 45, 'banana': 24, 'apple': 0}

如果你不想在2.X和3.X之间兼容,你也可以使用iteritems而不是 项目

{key: price * stock[key] for key, price in prices.iteritems()}

如果您想要一个总结果,可以将各个产品传递给sum

>>> sum(price * stock[key] for key, price in prices.items())
117.0

答案 2 :(得分:1)

根据任务说明正确回答codeacademy:

 prices = {
       "banana" : 4,
       "apple"  : 2,
       "orange" : 1.5,
       "pear"   : 3,
   }
   stock = {
        "banana" : 6,
        "apple"  : 0,
        "orange" : 32,
        "pear"   : 15,
    }

    for key in prices:
        print key
        print "price: %s" % prices[key]
        print "stock: %s" % stock[key]

     total = 0
     for key in prices:
        value = prices[key] * stock[key]
        print value
        total = total + value
    print total   

答案 3 :(得分:0)

我猜你还在使用codeacademy吗?如果是这样,那就这样做:

total = 0
for key in prices:  
    prices = 53
    stock = 10.5
    total = prices + stock
print total  

与说明书不同,您需要在将它们相乘并将它们添加到总数之前将所有值相加。希望这会有所帮助。

答案 4 :(得分:0)

我编写了以下代码并且它有效。 关键价格:

print key
   print "price: %s" % + prices[key]
   print "stock: %s" % + stock[key]

关键价格:     价值=价格[关键] *股票[关键]     印刷价值     总=总+值     打印总数

答案 5 :(得分:-1)

total = 0   
for key in prices:
    print prices[key] * stock[key]
    total += prices[key] * stock[key]
print total