7

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

在我看来,我会通过以下方式解决这个问题:

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 }
4

7 回答 7

15

如果您想要个人,可以使用 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
于 2013-04-18T15:32:57.970 回答
3

如果您知道如何遍历字典、使用键索引字典并理解字典,那将是一个简单的过程

>>> 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 代替 items

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

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

>>> sum(price * stock[key] for key, price in prices.items())
117.0
于 2013-04-18T15:32:38.583 回答
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   
于 2016-01-04T16:19:02.407 回答
0

我猜你在codeacademy?如果是这样,请这样做:

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

与说明中所说的不同,您必须先将所有值相加,然后再将它们相乘并将它们加到总数中。希望这可以帮助。

于 2014-07-05T23:24:01.033 回答
0

快速和一般的答案。

如果您正在寻找一种有效且快速的方法将两个字典的元素(值)相乘,请使用dict comprehension。确保两个字典具有相同的键。你可以使用这个单线:

new_dict = { key : value * dict2[key] for key,value in dict1.items() }
于 2021-12-23T13:41:47.473 回答
0

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

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

输入价格: value = prices[key]*stock[key] print value total = total + value print total

于 2016-07-06T11:44:23.847 回答
-1
total = 0   
for key in prices:
    print prices[key] * stock[key]
    total += prices[key] * stock[key]
print total
于 2015-09-18T19:16:29.417 回答