Умножение, а затем суммирование значений из двух словарей

Мне нужно умножить значения из каждого ключа, а затем добавить все значения вместе, чтобы напечатать один номер. Я знаю, что это, наверное, очень просто, но я застрял

На мой взгляд, я бы обратился к этому с чем-то вроде:

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 } 

Вы могли бы использовать понимание диктата, если бы хотели людей:

 >>> {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 

Если бы вы знали, как выполнять итерацию через словарь, индексировать словарь с использованием ключа и понимать словарь, это было бы прямолинейно

 >>> 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), вы можете передать его как представление List в встроенный 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 

Я предполагаю, что вы в кодекадемии? Если так, просто выполните это:

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

В отличие от того, что сказано в инструкциях, вам нужно будет добавить все значения вместе, прежде чем их умножить и добавить в общую сумму. Надеюсь это поможет.

Правильный ответ для 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 

Я написал следующий код, и он сработал. за ключ в ценах:

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

для ключа в ценах: значение = цены [ключ] * запас [ключ] значение печати итого = итого + значение печать итого

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