7

各キーの値を乗算し、すべての値を加算して 1 つの数値を出力する必要があります。私はこれがおそらく非常に単純であることを知っていますが、私は立ち往生しています

私の考えでは、次のような方法でこれに対処します。

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

個人が必要な場合は、辞書内包表記を使用できます。

>>> {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 を使用することもできます

{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
total = 0   
for key in prices:
    print prices[key] * stock[key]
    total += prices[key] * stock[key]
print total
于 2015-09-18T19:16:29.417 に答える