2017-12-13 12 views
1

私は半年の歳出を7年間リストアップした単純な辞書を持っているとします。Python 3.6 - 辞書を繰り返して結果のタプルを計算し、合計値を返す

d = {'year1':[1,2], 'year2':[3,4], 'year3':[5,6], 'year4':[7,8], 'year5':[9,10], 'year6':[11,12], 'year7':[13,14]} 

私はこの辞書をループして、最終的な合計値を印刷することにより、これらの7年間で過ごしたどのくらいかを知りたいでしょう。私はそれをループすることができましたが、結果として1年分の合計を含むタプルが生成されましたが、結果として得られるタプルは混乱してしまいます。

for key, value in d.items(): 
    yearly_sums = key, sum(value) 
    print(yearly_sums) 

    Year1 3 
    Year2 7 
    Year3 11 

ここまで、良いです。しかし、ここではそれぞれitemを印刷すると、ループは 'dual'値を出力します。

continued from above... 
for item in yearly_sums: 
    print('Yearly sum is:', item) 

私は最後のステップに進むと私は取得していますがあることができるように私は、印刷結果をテストするために、上記のスニペットを実行:

Yearly sum is: Year1 
Yearly sum is: 3 

として、私はyear1ためYearly sum is: 3を取得する必要がある場合には例。最後に残っている最後のステップは、itemをループして最終的な合計値を出力することですが、項目が数値のみで構成されていることをPythonで明確にするにはどうすればいいですか?year1,year2?または私はここに何かを逃していますか?

+3

1月はどこから来たのですか? –

+0

誤植が訂正されました。 –

答えて

2

コード内の問題は、yearly_sumsの定義(または使用方法に応じて使用する)です。あなたはタプルとしてそれをdefininingし、それをループさ

yearly_sums = key, sum(value) 

のでfor item in yearly_sums:の最初の反復はあなたに年を与え、その結果として、Yearly sum is: Year1が印刷されます。 2番目の値は実際のコストを返し、必要な結果を得ます。


代わりに、次を使用することができます。

prduces
d = {'year1':[1,2], 'year2':[3,4], 'year3':[5,6], 'year4':[7,8], 'year5':[9,10], 'year6':[11,12], 'year7':[13,14]} 

for year, costs in d.items(): 
    print('Yearly sum for {} is: {}'.format(year, sum(costs))) 

Yearly sum for year1 is: 3 
Yearly sum for year2 is: 7 
Yearly sum for year3 is: 11 
Yearly sum for year4 is: 15 
Yearly sum for year5 is: 19 
Yearly sum for year6 is: 23 
Yearly sum for year7 is: 27 

を代わり、可能な限りあなたのコードを維持するために:

for key, value in d.items(): 
    yearly_sums = key, sum(value) 
    print('Yearly sum for {} is: {}'.format(*yearly_sums)) 

もちろん、上記と同じ出力が生成されます。

+0

コードが動作します。しかし、私は毎月の支出の合計を計算しなければならなかったので、唯一の正しいオプションは、最終的な合計を計算するためにループすることができるタプル/リストを定義することです。 –

+0

@ Shiv_90いいえ、そうではありません。そして、それをSOに掲示する前に問題を単純化することは、一般的には大いに役立ちますが、あなたはそれをやりすぎて、まったく異なるものを投稿してしまいます。だから、あなたが持っている質問をしてください。別のものではありません。 –

+0

良い点。しかしここから私は自分で進めます。 Pythonの初心者だから、タプルがそのような結果をプリントアウトする理由を明確にしたいと思っていました。計画は、あなたが示したような数値を印刷してから、明快さを得た後に進んでいくという計画でした(どのように素晴らしいプログラムが構築されたのか)。しかし、二重の結果(私は合計を計算するために単一の 'item'が必要です)のために、プリントが私にそれをさらにループさせることを妨げました。これは、将来正確な値を出力するためにタプルをループするときに役立ちます。 –

2

私は、これはあなたが何をしたいかだと思う:

for key, value in d.items(): 
    yearly_sums = key, sum(value) 
    print('Yearly sum is:', yearly_sums[1]) 

Yearly sum is: 3 
Yearly sum is: 7 
Yearly sum is: 11 
Yearly sum is: 15 
Yearly sum is: 19 
Yearly sum is: 23 
Yearly sum is: 27 

私はこのことができます願っています。

+0

ありがとう、これも動作します! –

関連する問題